遍历方式
# 构造数据
Set<Integer> set = new HashSet<>();
int n = 5000_0000;
for (int i = 0; i < n; i++) {
set.add(i);
}
# Set 没有fori循环 的遍历方式
fori 循环的话set没有get(i)方法,故无法使用
# 增强for循环
for (int item set) {
}
# iterator for 循环
for (Iterator<Integer> iterator = set.iterator(); iterator.hasNext(); ) {
iterator.next();
}
# iterator while 循环
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
iterator.next();
}
# list.forEach 循环
set.forEach(item -> {
});
# list.stream().forEach 循环
set.stream().forEach(item -> {
});
# list.parallelStream().forEach 循环
set.parallelStream().forEach(item -> {
});
5000_0000次循环性能比较
循环类型 | 第1轮 | 第2轮 | 第3轮 | 第4轮 | 第5轮 |
---|
增强for循环 | 586 ms, 25.58% | 615 ms, 25.97% | 693 ms, 27.00% | 654 ms, 26.66% | 580 ms, 25.48% |
iterator for 循环 | 707 ms, 30.86% | 816 ms, 34.46% | 854 ms, 33.27% | 724 ms, 29.51% | 755 ms, 33.17% |
iterator while 循环 | 348 ms, 15.19% | 325 ms, 13.72% | 373 ms, 14.53% | 356 ms, 14.51% | 364 ms, 15.99% |
list.forEach 循环 | 370 ms, 16.15% | 329 ms, 13.89% | 365 ms, 14.22% | 396 ms, 16.14% | 299 ms, 13.14% |
list.stream().forEach 循环 | 183 ms, 7.99% | 188 ms, 7.94% | 187 ms, 7.28% | 228 ms, 9.29% | 184 ms, 8.08% |
list.parallelStream().forEach 循环 | 94 ms, 4.10% | 93 ms, 3.93% | 92 ms, 3.58% | 94 ms, 3.83% | 91 ms, 4.00% |