對於hashmap的理解

2021-10-01 13:26:52 字數 583 閱讀 1548

對key求hashcode得到的值來選桶

對key求equals,如果相同則覆蓋,不相同則尾插成鍊錶(太長變成紅黑樹)

取值的時候是插入的逆過程,通過求傳入的key的hashcode來選桶,桶裡的鍊錶挨個和傳入的key求equals,true則取value,false則繼續找下乙個。

之前一直都是這麼理解的,剛剛自己做了個小實驗來驗證一下,結果正好符合

class

treenode

@override

public

inthashcode()

@override

public

boolean

equals

(object obj)

else

}else}}

class

solution

我自己寫了個類,重寫了hashcode和equals方法,使得hashcode一直都是相等的(總在乙個桶裡),當我把treenode1的值設為2的時候,size是2,說明兩條都插入了。當我把treenode1設為9的時候,size為1,且值為9,說明覆蓋了。

HashMap類的理解

hashmap是乙個雜湊表,它的儲存內容是鍵值對。紫色部分代表雜湊表,每個元素後面都是乙個單鏈表的頭結點。原始碼分析 上面原始碼,hashmap初始容量為 4個,最大容量為2的 30次冪,增長因子為 0.75 在進行擴容時,擴容數量 增長因子 當前容量。第 90行,為對應的 hash 表 hashm...

Hashmap的學習理解

一 hashmap的簡介概況 1.hash簡介 hashmap 是乙個雜湊表,它儲存的內容是鍵值對 key value 對映。hashmap 的實現不是同步的,這意味著它不是執行緒安全的。它的key value都可以為null。此外,hashmap中的對映不是有序的。hashmap 的例項有兩個引數...

HashMap原理的理解

hashmap 首先根據key計算hash值,hashcode右移16位與hashcode異或計算 用hash值不用hashcode值是因為hashcode 32位 太大不方便計算,並且得到答案的概率不均衡。第二步 是根據hash值去計算陣列下標 n 1 hash 用這個不用hash值取餘計算因為二...