對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值取餘計算因為二...