知識點 HashMap和它的小夥伴

2021-09-13 14:01:49 字數 473 閱讀 6237

1.hashmap

2.hashtable

3.concurrenthashmap

1.hashmap

底層是鍊錶+entry陣列,陣列基於entry這個內部類,這個類下有k,v,next,hash四個基本屬性,存放key、value、next指向下乙個例項、hashcode,以entry存放資料。

2.hashtable

跟hashmap的不同只是key不能為null,和put/set方法加了synchronized。但由於同步了put/set方法,則讀寫緩慢。

3.concurrenthashmap

以segment陣列為核心。乙個concurrenthashmap擁有乙個segment陣列,每個segment陣列的元素是多個hashentry陣列,裡面存放的和hashmap一樣。因為它是採取分段加鎖的,讀哪段segment陣列元素,就給哪段加鎖,其他元素不加鎖,所以可以同時讀取不同元素的entry陣列。

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