1. 程式人生 > >實現細節,hash對key為 null的處理,對重雜湊的處理

實現細節,hash對key為 null的處理,對重雜湊的處理

  構造方法中出現的幾個關鍵欄位:loadFactor ,threshold,CAPACITY,table
其中table上面講了,是HashMap的儲存結構。CAPACITY這個是構建HashMap的時候的容量,這裡使用了系統預設的初始容量,loadFactor 是載入因子,用處是和CAPACITY相乘獲得threshold,這個文件的說明如下:The next size value at which to resize (capacity * load factor)。其實就是HashMap擴容的臨界值,超過這個值,則重新擴容。
    這樣就說明了loadFactor 的用處了。這裡有人要問了。為什麼要這個東西。這裡就涉及到HashMap的原理了。HashMap中儲存元素的時候,首先得先通過其自己的hash演算法找到儲存在talbe陣列的索引值。但是這個hash演算法並不能保證,每一個元素對應不同的talbe陣列的索引值,當放入HashMap的元素過多的時候,就容易出現相同的索引值,在演算法裡叫衝突,這時候元素就會被加到該索引值下的連結串列當中,這樣查詢的效率就會大大降低,這顯然違背了HashMap快速查詢的初衷了。所有HashMap在設計的時候,就是用了這樣一個載入因子,如果儲存的元素個數佔table長度的比例大於loadFactor 載入因子的時候,衝突加劇,這樣我們就得擴容解決這樣的問題。 
    所以總結影響HashMap效率的兩個因素:1.初始容量 2.載入因子。解決的本質無非就是減少hash衝突。 

3、元素Hash值獲取及通過hash值找到talbe下標索引