按我的理解,我讀地圖客座率,地圖是如何生長的
加載因子是哈希表是如何充分允許之前把它的容量會自動增加
措施
因此,當負載因數爲.8(80%),地圖大小爲10時,Map
將增加10,當Map
中放置8個元素時。
所以,現在Map
有20的大小。我懷疑是什麼時候將下一個10元素空間添加到Map
。
- 當
Map
再次填滿80%,即16個元素放入Map
時。
或
- 當18個元件置於
Map
。
按我的理解,我讀地圖客座率,地圖是如何生長的
加載因子是哈希表是如何充分允許之前把它的容量會自動增加
措施
因此,當負載因數爲.8(80%),地圖大小爲10時,Map
將增加10,當Map
中放置8個元素時。
所以,現在Map
有20的大小。我懷疑是什麼時候將下一個10元素空間添加到Map
。
Map
再次填滿80%,即16個元素放入Map
時。或
Map
。這將是16.如果你看一下Java代碼HashMap
:
threshold = (int)(newCapacity * loadFactor);
其中新增產能新的大小。因此,在你的例子中的限制將是16.
80%的負載因子,所以有16個元素。它將根據當時所在元素的總量和當時的最大容量計算調整大小。
它不記錄上次調整大小。
A HashMap
有一個size()
和capacity
,這些是兩個不同的東西。 Capacity是散列表的內部大小,並且始終是2的冪,因此HashMap
不能有容量20. Size是用戶放入此映射的散列條目的數量。
在聲明HashMap
Map map = new HashMap(20)
它的實際容量是32和閾值是24,它的大小是零。
Map map = new HashMap()
對於這種情況映射具有大小0和缺省容量16.
閾:
threshold = (int)(newCapacity * loadFactor) = 32 * 0.8 = 25;
即25爲負載係數0.8。因此,只要您的地圖達到25個條目的大小,它將被調整爲包含相同25個條目的容量64。