在 Java 中,我们应当坚持使用迭代器iterator
或者forEach
循环遍历 List ,因为它俩总能根据不同的类型提供最快的遍历速度。(实际上是先有了 iterator ,然后 Java 官方为了优化代码复杂度,又推出了基于 iterator 的 forEach 循环,它俩是同一种方式的不同写法)
本文将测试ArrayList集合
与LinkedList集合
在三种循环下的遍历速度,样本容量大小为 10000 :
- for循环
- forEach循环
- iterator迭代器
测试代码范例
| public class Dog { |
| public static void main(String[] args) { |
| List<Object> list = new ArrayList<>(); |
| for (int i = 0; i < 10000; i++) { |
| list.add(i); |
| } |
| |
| long start1 = System.currentTimeMillis(); |
| for (int i = 0; i < list.size(); i++) { |
| System.out.print(list.get(i)); |
| } |
| long end1 = System.currentTimeMillis(); |
| |
| long start2 = System.currentTimeMillis(); |
| for (Object obj : list) { |
| System.out.print(obj); |
| } |
| long end2 = System.currentTimeMillis(); |
| |
| long start3 = System.currentTimeMillis(); |
| Iterator<Object> iterator = list.iterator(); |
| while (iterator.hasNext()){ |
| System.out.print(iterator.next()); |
| } |
| long end3 = System.currentTimeMillis(); |
| |
| System.out.println(); |
| System.out.println("for耗时:" + (end1 - start1)+" 毫秒"); |
| System.out.println("forEach耗时:" + (end2 - start2)+" 毫秒"); |
| System.out.println("iterator耗时:" + (end3 - start3)+" 毫秒"); |
| } |
| } |
一、结果:ArrayList
| for耗时:13 毫秒 |
| forEach耗时:10 毫秒 |
| iterator耗时:10 毫秒 |
二、结果:LinkedList
| for耗时:67 毫秒 |
| forEach耗时:11 毫秒 |
| iterator耗时:11 毫秒 |
三、结论
可以看到,使用forEach
循环和使用iterator
迭代器的效果是一样的,实际上编译器会把 forEach 循环编译成 for + iterator 循环;同时单纯的for
循环的性能较差,所以我们应当坚持使用iterator
迭代器或者forEach
循环遍历 List。
| List<String> list = List.of("Apple", "Orange", "Pear"); |
| for (String s : list) { |
| System.out.println(s); |
| } |
| List<String> list = List.of("Apple", "Orange", "Pear"); |
| for (Iterator<String> it = list.iterator(); it.hasNext(); ) { |
| String s = it.next(); |
| System.out.println(s); |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具