Java中HashMap的初始容量设置

  • 前言: 今天看到代码中有一句:

Map<String, Object> sqlMap = new HashMap(2); 由于以前也没啥注意,比较好奇这个2是干嘛用的

  • 查阅资料:发现在阿里巴巴Java开发手册上建议HashMap初始化时设置已知的大小

初步了解后 我在想如何确定初始值的大小呢!

经过查询资料了解:

集合初始化时, 指定集合初始值大小。

说明: HashMap使用HashMap(int initialCapacity)初始化,

正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即loader factor)默认为0.75, 如果暂时无法确定初始值大小,请设置为16(即默认值)。

反例:HashMap需要放置1024个元素,由于没有设置容量初始大小,随着元素不断增加,容量7次被迫扩大,resize需要重建hash表,严重影响性能。

  • 然后我又好奇,如何扩容的 每次扩容多少 如何计算。

默认是16,每次都是2的倍数,所以两次扩充之后变成64,三次就是128了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值