java hashmap容量_java HashMap初始化容量的效率问题

问题描述

在本机测试用例中,初始化键值对100W,初始化容量200W(其实当键值对更少,比如10W,5W等级别,情况也是类似的),发现初始化容量的效率和不初始化容量的效率并不是稳定不变的,为何一直听说当可预估map内容大小时,应该预填容量值呢?

测试代码

int puts = 1000000, cap = puts * 2;

for (int k = 0; k < 5; k++) {

System.out.println("=========独立测试开始==========");

HashMap map5 = new HashMap(cap);

long time01Start = System.currentTimeMillis();

for (int i = 0; i < puts; i++) {

map5.put(i, i);

}

System.out.println("HashMap初始化容量" + puts / 10000 + "W的耗时:" + (System.currentTimeMillis() - time01Start) + "ms");

HashMap map6 = new HashMap();

long time02Start = System.currentTimeMillis();

for (int i = 0; i < puts; i++) {

map6.put(i, i);

}

System.out.println("HashMap未初始化容量" + puts / 10000 + "W的耗时:" + (System.currentTimeMillis() - time02Start) + "ms");

System.out.println("=========独立测试结束==========");

}

5次的测试结果

=========独立测试开始==========

HashMap初始化容量100W的耗时:964ms

HashMap未初始化容量100W的耗时:603ms

=========独立测试结束==========

=========独立测试开始==========

HashMap初始化容量100W的耗时:119ms

HashMap未初始化容量100W的耗时:658ms

=========独立测试结束==========

=========独立测试开始==========

HashMap初始化容量100W的耗时:26ms

HashMap未初始化容量100W的耗时:72ms

=========独立测试结束==========

=========独立测试开始==========

HashMap初始化容量100W的耗时:154ms

HashMap未初始化容量100W的耗时:34ms

=========独立测试结束==========

=========独立测试开始==========

HashMap初始化容量100W的耗时:134ms

HashMap未初始化容量100W的耗时:34ms

=========独立测试结束==========

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值