Java List的7种遍历以及性能对比

本文分析了Java中不同遍历List的方法(for,增强for,Iterator,iteratorwhile,forEach,stream,parallelStream)在10,000,000次循环中的性能表现,展示了每种方式在多次运行中的平均时间及其变化趋势。

构造1亿条测试数据

# 测试数据构造
List<Integer> list = new ArrayList<>();
int n = 10000_0000;
for (int i = 0; i < n; i++) {
    list.add(i);
}

在这里插入图片描述

遍历方式

# 经典 for 循环
for (int i = 0; i < list.size(); i++) {
    list.get(i);
}

# 增强 for 循环
for (int item list) {
}

# for 迭代器
for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext(); ) {
    iterator.next();
}

# while 迭代器
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
    iterator.next();
}

# list.forEach 循环
list.forEach(item -> {
});

# list.stream().forEach 循环
list.stream().forEach(item -> {
});

# list.parallelStream().forEach 循环
 list.parallelStream().forEach(item -> {
 });

在这里插入图片描述

1亿次循环性能比较

循环类型第1轮第2轮第3轮第4轮第5轮优势
经典 for 循环75 ms
6.08%
53 ms
8.62%
68 ms
10.64%
54 ms
8.39%
53 ms
6.79%
有索引
增强 for 循环146 ms
11.83%
149 ms
24.23%
164 ms
25.67%
185 ms
28.73%
163 ms
20.90%
简单
for 迭代器56 ms
4.54%
54 ms
8.78%
58 ms
9.08%
56 ms
8.70%
77 ms
9.87%
修改集合
while 迭代器55 ms
4.46%
56 ms
9.11%
56 ms
8.76%
56 ms
8.70%
55 ms
7.05%
修改集合
list.forEach555 ms
44.98%
115 ms
18.70%
111 ms
17.37%
109 ms
16.93%
130 ms
16.67%
简单
list.stream().forEach143 ms
11.59%
115 ms
18.70%
108 ms
16.90%
107 ms
16.61%
112 ms
14.36%
list.parallelStream().forEach203 ms
16.45%
71 ms
11.54%
71 ms
11.11%
73 ms
11.34%
187 ms
23.97%
并行流

在这里插入图片描述

参考

Java 中 List 的5种遍历方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值