Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

怎样提升集合遍历效率?

查看完整题解

参考回答

直接回答

先选符合容器特点的遍历方式,再减少循环里的重复工作。LinkedList 用迭代器顺序走,避免反复 get(i);Map 需要键和值时直接遍历 entrySet;只找一个结果时及时结束。forEach、Stream、并行流没有固定速度排名,优化应依据真实数据和测量结果。

讲清原理

算法上的差别通常比换语法更值得关注。对链表做下标循环可能 O(n²),换成一次顺序遍历可降到 O(n)。遍历 HashMap 时,成本还与桶容量加 size 有关,过度预分配可能让空桶扫描增加。

循环内重复网络请求、对象解析或不必要复制,可能比遍历器本身贵得多。并行处理需考虑拆分、合并、共享状态与调度开销;并发容器还要保证所观察的变化符合业务,而不是为了快牺牲一致性。

例子与易错点

Java 21 的 main 片段:

var map = new java.util.HashMap<String, Integer>();
map.put("A", 2);
map.put("B", 3);
int total = 0;
for (var entry : map.entrySet()) total += entry.getValue();
System.out.println(total);

输出 5,且不依赖键迭代顺序。若只需要值,values 更能表达意图;若同时要键和值,entrySet 可避免逐键再次 get。性能结论要记录 JDK、数据量和负载,使用 JMH 核验,不能编造提速百分比。

相关题:第 5 题、第 10 题、第 35 题、第 38 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。