秋招 HashMap 知識點

2021-10-09 20:21:00 字數 760 閱讀 5612

1.hashmap的資料結構:

陣列+鍊錶或紅黑樹。當鍊表長度大於8時,轉成紅黑樹。

陣列的特點:查詢效率高,插入、刪除效率低。

鍊錶的特點:查詢效率低,插入、刪除效率高。

先根據hashcode放入陣列,如果有衝突,就會在陣列下方新增鍊錶。

鍊錶長度大於8時,會轉成紅黑樹o(logn)。

2.hashmap中增刪改查的底部實現原理是什麼?

public

class

test

增:.put

改:.put

刪:.remove

查: 查key。判斷是否存在用.containskey(key) 得到true或false的結果。

3.hashmap是如何實現擴容?

擴容。當前容量不夠,put了太多的元素,因此需要擴容。

先計算新的 hash表和新的容量閾值,然後初始化乙個新的hash表,將舊的鍵值對重新對映在新的hash表裡。

4.hashmap如何解決位址衝突

開放定址法、再雜湊法、鏈位址法。

hashmap中處理hash衝突的方法就是鏈位址法。

5.hashmap為什麼是非線性安全的

為什麼說 hashmap 是非執行緒安全的?

建議使用concurrenthashmap

hashmap知識點小結

1.hashmap是基於hash表的map介面實現 2.hashmap底層採用的是entry陣列和鍊錶實現的 3.hashmap採用鍵值隊 key,value 結構,其中 key不可重複,可以為null,value的值可以重複。4.hashmap為執行緒不安全,無synchronized修飾 5.h...

hashMap關鍵知識點

1 資料結構 jdk1.7是陣列加鍊表,jdk1.8是陣列加鍊表加紅黑樹 鍊錶太長了查詢也慢,所以鍊錶長度超過8時就使用紅黑樹咯 2 hashmap的初始化大小 1 不給長度時,預設初始化為16,建立map時盡量給個長度,防止不斷擴容影響效率。2 大小為2的n次冪時,雜湊得比較均勻,那麼查詢就比較快...

HashMap面試知識點

答案 2個put會同時擴容造成死迴圈 鍊錶有環 可能有2個同時put,導致1個丟失,被後面的put覆蓋了。一種情況是2個執行緒,1存1取,a剛存完key1value1,還沒等b取值,a又存完key1value2,這樣b取值只能取得key1value2,key1value1就丟失了 答案 當hashm...