在Java中,HashMap中是用哪些方法來解決雜湊衝突的?

一个小虎牙發表於2024-03-10

HashMap中呼叫hashCode()方法來計算hashCode。
由於在Java中兩個不同的物件可能有一樣的hashCode,所以不同的鍵可能有一樣hashCode,從而導致衝突的產生。

採用鏈地址法解決衝突。

HashMap底層是陣列+連結串列+紅黑樹(JDK1.8)來實現的,根據key的hash值查詢對應的位桶。
1.當前索引陣列為空,則將鍵值對以連結串列形式插入。
2.當前索引陣列已經存在,則判斷當前連結串列是紅黑樹還時連結串列,然後插入。如果是連結串列插入到最後一個,判斷長度是否大於8,大於8將連結串列轉成紅黑樹。
所以應該是拉鍊法解決衝突。

相關文章