jdk原始碼 hashmap的1 8與1 7比較

2021-08-28 11:41:31 字數 825 閱讀 2108

1.8鍊錶的定義基本上與1.7相同,但是類名改為node,但是node實現了map.entry介面,實質是一樣的

static class nodeimplements map.entry 

tablesizefor主要功能是返回乙個比給定整數大且最接近的2的冪次方整數,返回的是n+1,例項如下,右移一位,把最高位的1後面一位也變成了1,通過右移,把最高位後面全部置換成1,最後n+1,即為最接近傳入數的2的冪次方整數

hashmap1.8的資料結構如下,當鍊表的長度不小超過8的話就按鍊錶儲存,若是超過了8,那麼通過treeifybin 轉化為紅黑樹

JDK原始碼學習 HashMap

什麼是hash?hash的意思是 雜湊 音譯做 雜湊 輸入乙個任意長度的資料,進過雜湊運算之後,輸出一段固定長度的資料,作為輸入資料的指紋,輸出的結果就是雜湊值。一般來說輸入資料的空間遠遠大於輸出的雜湊值的空間,輸入不同的資料可能會產生相同的雜湊值,所以很難從雜湊值來逆向推出輸入值是什麼。雜湊函式本...

JDK原始碼之HashMap

部分重要屬性 存放key,value的陣列 transient node table 存放entry的set transient set entryset hashmap的大小 預設16 transient int size 修改次數 transient int modcount 擴擴容閾值capa...

分析HashMap 的 JDK 原始碼

緣由 今天好友拿著下面的 問我為什麼 map.entry 這個介面沒有實現 getkey 和 getvalue 方法,卻可以使用,由此,開啟了一番查閱 jdk 原始碼的旅途 map map new hashmap map.put 1,張三 map.put 2,李四 map.put 3,王五 map....