HashMap的鏈表數據結構是用來解決什么問題的


解決哈希沖突。

1、JDK1.7的HashMap是由數組+鏈表構成的,新增一個數通過哈希算法,計算出對應存放在數組的某個位置,如果這個位置已經存在數據了,也就是說存在了哈希沖突,這時候JDK1.7就將新增的數和原來的數構成一個鏈表放在數組這個位置,后面沖突的數依次都放入鏈表中。
2、通常解決哈希沖突有兩種辦法,上面所說的通過鏈表的形式稱為鏈地址法;
還有一種方法稱為開放地址法,也就是說如果存在哈希沖突了,那么將新增的值在用一個新的哈希算法算出所存的位置插入,但是這還會構成二次沖突,三次沖突.....

3、JDK1.8的HashMap是由數組+鏈表+紅黑樹構成,
當鏈表長度超過8會自動轉換成紅黑樹,紅黑樹節點個數小於6,又自動轉換為鏈表。這是為了提高檢索效率(紅黑樹檢索效率明顯是高於鏈表的)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM