为了账号安全,请及时绑定邮箱和手机立即绑定

Java: List, Set, Map等如何根据需求设置初始容量?

Java: List, Set, Map等如何根据需求设置初始容量?

不负相思意 2019-02-23 10:26:20
比如说需要存储10个, 200个, 10000个List, Set, Map等如何设置初始容量?也就是譬如 List<Elem> list = new ArrayList<>(n); 这个n如何设置?是恰好就是10个, 200个, 10000个还是 n/load_factor ?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

首先你得知道你的数据规模,比如:100,然后还得知道每个容器实现的扩容方式,比如:HashMap初始默认容量为16,扩容因子为0.75,也就是说超过12个时就会扩容,那么当容量接近该值时,就应事先把容量定为32(翻倍,这个是HashMap的扩容方法),所以当容量为100,且后续可能不会再增长的时候,可以把HashMap的初始容量设定为:100,实际上HashMap会找到一个比100大的最小2的整数指数幂(这里应该是128),如果后续有扩容的需求,则需要考虑进来,因具体情况而定。

当然,上述方法仅针对对性能要求很高的场景,绝大多数情况下,并无太大实际意义,仅供参考。

查看完整回答
反对 回复 2019-03-01
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

可以根据n进行判断,来new对应的ArrayList或者n作为参数传递进来。

查看完整回答
反对 回复 2019-03-01
?
青春有我

TA贡献1784条经验 获得超8个赞

给出n+1就好了

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 887 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信