首页 >Java >java教程 >For-each 循环或迭代器:哪个对于集合遍历更有效?

For-each 循环或迭代器:哪个对于集合遍历更有效?

DDD
DDD原创
2024-11-25 15:24:10987浏览

  For-each Loop or Iterator: Which is More Efficient for Collection Traversal?

增强的 for 循环或迭代器:评估循环效率

问题:

在集合中导航时,什么是最有效的方法:for-each 循环或迭代器?

代码片段:

For-each循环:

List<Integer> a = new ArrayList<>();
for (Integer integer : a) {
  integer.toString();
}

迭代器:

List<Integer> a = new ArrayList<>();
for (Iterator iterator = a.iterator(); iterator.hasNext();) {
  Integer integer = (Integer) iterator.next();
  integer.toString();
}

评估:

1。读取集合值:

当简单地遍历集合来访问值时,迭代器和 for-each 循环具有相同的效率,因为 for-each 循环内部使用了迭代器。

2. C 风格循环与迭代器:

与迭代器和 for-each 循环相比,通过 get(i) 访问元素的传统“C 风格”循环可能会表现出性能缺陷。对于某些数据结构(例如链表),Get(i) 的复杂度为 O(n),导致循环的整体时间复杂度为 O(n2)。

3.迭代器效率:

迭代器保证 next() 的时间复杂度为 O(1),渲染循环 O(n)。

4。字节码比较:

检查 for-each 循环和迭代器生成的字节码,发现它们几乎无法区分,表明没有内在的性能差异。

结论:

  • 选择 for-each 循环或迭代器仅迭代集合。
  • 优先选择 for-each 循环,因为其简洁性和可读性,除非效率至关重要。
  • 注意传统 C 风格循环在某些场景中的潜在性能缺陷涉及 get(i)。

以上是For-each 循环或迭代器:哪个对于集合遍历更有效?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn