构造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.forEach | 555 ms 44.98% | 115 ms 18.70% | 111 ms 17.37% | 109 ms 16.93% | 130 ms 16.67% | 简单 |
| list.stream().forEach | 143 ms 11.59% | 115 ms 18.70% | 108 ms 16.90% | 107 ms 16.61% | 112 ms 14.36% | 流 |
| list.parallelStream().forEach | 203 ms 16.45% | 71 ms 11.54% | 71 ms 11.11% | 73 ms 11.34% | 187 ms 23.97% | 并行流 |

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

被折叠的 条评论
为什么被折叠?



