HashSet与ArrayList性能测试

一、十万次循环测试,测试代码如下:
Set<Integer> set = new HashSet<>();
List<Integer> list = new ArrayList<>();
Long time1 = System.currentTimeMillis();
for(int i = 0; i < 100000; i ++){
set.add(i);
}
Long time2 = System.currentTimeMillis();
for(int i = 0; i < 100000; i ++){
list.add(i);
}
Long time3 = System.currentTimeMillis();
System.out.println("set add 100000 cost:" + ( time2 - time1 ));
System.out.println("list add 100000 cost:" + ( time3 - time2 ));

Long time4 = System.currentTimeMillis();
for(Integer i : set){

}
Long time5 = System.currentTimeMillis();
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer str = it.next();
}
Long time6 = System.currentTimeMillis();
for(Integer i : list){

}
Long time7 = System.currentTimeMillis();
System.out.println("set foreach iterate 100000 cost:" + ( time5 - time4 ));
System.out.println("set iterator iterate 100000 cost:" + ( time6 - time5 ));
System.out.println("list foreach iterate 100000 cost:" + ( time7 - time6 ));

结果如下:

set add 100000 cost:20
list add 100000 cost:4
set foreach iterate 100000 cost:6
set iterator iterate 100000 cost:2
list foreach iterate 100000 cost:3


set add 100000 cost:21
list add 100000 cost:3
set foreach iterate 100000 cost:4
set iterator iterate 100000 cost:4
list foreach iterate 100000 cost:3

二、五百万次循环测试,结果如下:

set add 5000000 cost:2236
list add 5000000 cost:250
set foreach iterate 5000000 cost:41
set iterator iterate 5000000 cost:40
list foreach iterate 5000000 cost:16


set add 5000000 cost:2238
list add 5000000 cost:269
set foreach iterate 5000000 cost:47
set iterator iterate 5000000 cost:39
list foreach iterate 5000000 cost:15

三、一万次循环测试,结果如下:

set add 10000 cost:5
list add 10000 cost:1
set foreach iterate 10000 cost:1
set iterator iterate 10000 cost:0
list foreach iterate 10000 cost:1


set add 10000 cost:5
list add 10000 cost:2
set foreach iterate 10000 cost:1
set iterator iterate 10000 cost:1
list foreach iterate 10000 cost:1

四、总和分析

ArrayList始终比HashSet性能要高

HashSet每次add总要判断hashcode导致效率低

HashSet两种循环中iterator 方式不稳定,不过总是比foreach要快一点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值