HashMap存1000条数据,构造时传多少才能让HashMap不需要动态扩容?

文章详细解释了HashMap在初次put()操作时如何根据initialCapacity进行table的初始化,包括resize()方法中对threshold值的调整,以及tableSizeFor()方法的作用。重点在于理解initialCapacity实际表示table容量而非threshold,以及如何通过调整确保存储一定数量数据时避免动态扩容。
摘要由CSDN通过智能技术生成

当我们首次调用 HashMapput() 方法存数据时,如果发现 tablenull,则会调用 resize() 去初始化 table,具体逻辑在 putVal() 方法中。

在这里插入图片描述

resize() 方法中,调整了最终 threshold 值,以及完成了 table 的初始化。

在这里插入图片描述

因为 resize() 还糅合了动态扩容的逻辑,所以我将初始化 table 的逻辑用注释标记出来了。其中 xxxCapxxxThr 分别对应了 table容量动态扩容阈值,所以存在两组数据。

当我们指定了初始容量,且 table 未被初始化时,oldThr 就不为 0,则会走到代码 ① 的逻辑。在其中将 newCap 赋值为 oldThr,也就是新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值