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...