Hashmap 什么时候进行扩容呢?

当 hashmap 中的元素个数超过数组大小 loadFactor 时,就会进行数组扩容, loadFactor 的默认值为0.75。

也就是说,默认情况下,数组大小为16,那么当 hashmap 中元素个数超过160.75=12的时候,就把数组的大小扩展为216=32,即扩大一倍,然后重新计算每个元素在数组中的位置,而这是一个非常消耗性能的操作,所以如果我们已经预知 hashmap 中元素的个数,那么预设元素的个数能够有效的提高 hashmap 的性能。

比如说,我们有1000个元素 new HashMap(1000),但是理论上来讲 new HashMap(1024)更合适,不过上面 annegu 已经说过,即使是1000,hashmap 也自动会将其设置为1024。但是 new HashMap(1024)还不是更合适的,因为0.75*1000<1000,也就是说为了让0.75* size >1000,我们必须这样 new HashMap(2048)才最合适,既考虑了&的问题,也避免了 resize 的问题。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部