2010-08-25 60 views
14

如果我使用一個HashSet爲10的初始容量和0.5 然後每5個元素添加的HashSet將增加或第一HashSet 的負載因數增加10種元素中,並在15,20後ATC。容量會增加嗎?HashSet的負載因數

回答

3

這是第二種情況。 HashSet和hashMap的loadFactor是一個相對因子。

19

加載因子是衡量HashSet在其容量自動增加之前可以獲得的滿量程。當哈希表中的條目數量超過負載因子和當前容量的乘積時,散列表就會被重新映射(即重建內部數據結構),以便散列表大約是存儲桶數量的兩倍。

source

+0

好的!!!我一直在尋找這個解釋。所以默認值是2/3,這意味着當我填滿12時,初始大小爲16,這將增加空間。 – ha9u63ar 2015-01-11 15:23:51

+0

對於Java 7和8,HashSet的默認加載因子是0.75。 – Kent 2017-10-31 20:58:00

2

HashMap中的默認初始容量需要的是16和負載因子是0.75f(即75當前地圖大小的%)。負載因子表示HashMap容量應該加倍的級別。

對於容量和負載因子的實例產物16 * 0.75 = 12。這表示存儲第12密鑰後 - 值對進HashMap中,其容量變得32.