HashMap 負載因子

2021-10-08 15:38:28 字數 523 閱讀 8329

static final float default_load_factor = 0.75f;

大概意思就是說,在理想情況下,使用隨機雜湊碼,節點出現的頻率在hash桶中遵循泊松分布,同時給出了桶中元素個數和概率的對照表。從上面的表中可以看到當桶中元素到達8個的時候,概率已經變得非常小,也就是說用0.75作為載入因子,每個碰撞位置的鍊錶長度超過8個的概率達到了一百萬分之一。

在理想情況下,使用隨機雜湊碼,在擴容閾值(載入因子)為0.75的情況下,節點出現在頻率在hash桶(表)中遵循引數平均為0.5的泊松分布。忽略方差,即x = λt,p(λt = k),其中λt = 0.5的情況,按公式:

計算結果如上述的列表所示,當乙個bin中的鍊錶長度達到8個元素的時候,概率為0.00000006,幾乎是乙個不可能事件。

HashMap的負載因子

下面是hashmap的乙個建構函式,兩個引數initialcapacity,loadfactor 這關係hashmap的迭代效能。constructs an empty hashmap with the specified initial capacity and load factor.param...

HashMap容量和負載因子

引自 hashmap底層資料結構是陣列 鍊錶,jdk1.8中還引入了紅黑樹,當鍊表長度超過8個時,會將鍊錶轉成紅黑樹,以提公升其查詢效能。那麼,給出乙個節點,hashmap是如何確定這個節點應該放在具體哪個位置呢?以jdk1.8為例 final v putval int hash,k key,v v...

HashMap的負載因子為何預設是0 75

hashmap負載因子,與擴容機制有關 即若當前容器的容量,達到設定最大值,就需要要執行擴容操作。舉個例子 當前的容器容量是16,負載因子是0.75 16 0.75 12,也就是說,當容量達到了12的時就會執行擴容操作。作用很簡單,相當於是乙個擴容機制的閾值。當超過了這個閾值,就會觸發擴容機制。ha...