HashMap 默认初始大小设置

HashMap默认初始容量是16,长度始终保持2的n次方,加载因子为0.75,扩容增量:原容量的1倍。

如果我们直接设置初始大小为实际存储的数量的话,HashMap并不会使用我们传进来的 initialCapacity 直接作为初识容量。JDK 会默认帮我们计算一个相对合理的值当做初始容量。所谓合理值,其实是找到第一个比用户传入的值大的 2 的幂。比如传7的话,JDK 会通过计算,帮我们创建一个容量为 8 的 Map,传9的话,JDK 会通过计算,帮我们创建一个容量为16的 Map。

实际存储的数量 >initialCapacity *0.75时 会进行扩容,每次扩容都需要重建hash表,是非常影响性能的。同样设置过大浪费内存,因此设置一个合适的初始容量是有必要的。

可通过expectedSize /0.75F + 1.0F 计算默认初始的大小,expectedSize 为要存的数量。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值