1.hashmap的預設長度為16.
put操作
首先計算key的hash值,key為空時hash為0,
如果是第乙個值則建立乙個node的陣列物件,陣列的長度為16
因為陣列的長度為16,所以陣列下標的取值為(0~15),0=< (hash值除以15取餘)<=15
那麼第乙個node物件下標就是 key的hash值除以15取餘。
2。裝載因子的預設值為0.75
裝載因子的作用:
擴大(hash值除以15取餘)選擇的範圍,降低下標相同的機率。
試想一下,長度為16的陣列,只裝12個數。這12個數的下標是從(0~15)中隨機生成。長度為1000的陣列,只裝12個數,這12個數的下標是從(0~999)中隨機生成。
這12下標有相等的數的概率是不同的。前者的裝載因子為0.75,後者的裝載因子為0.012.
所以裝載因子越小下標相同的概率就越小。有上述可推測裝載因子肯定是小於等於1,大於零的。
3。hash值不同,但是座標相同。舉個栗子
hash分別為50000,80000 陣列長度為16,由此可以得出50000和80000除以16的餘數為都為0,即下標都為了0.由於hash值不同我們可以知道這2個key肯定是不同的。這就需要介紹陣列儲存的node物件。node物件可以包含另一乙個node物件。即2個座標相同的物件可以理解為第乙個node物件包含了第二個node物件,如果來了第三個座標為零的物件,則第二個node物件包含了但三個node物件。陣列座標只要儲存了第乙個node物件就能依次得到所有的node物件。如圖(1)陣列包含了最外層的node物件。node物件有如下屬性key、value 、hash 、node,通過比較hash值來獲取對應得node物件。
以上是對hashmap的初步理解。不對的地方請多多指教。
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的理解
對key求hashcode得到的值來選桶 對key求equals,如果相同則覆蓋,不相同則尾插成鍊錶 太長變成紅黑樹 取值的時候是插入的逆過程,通過求傳入的key的hashcode來選桶,桶裡的鍊錶挨個和傳入的key求equals,true則取value,false則繼續找下乙個。之前一直都是這麼理...