问题:
在集合中导航时,什么是最有效的方法: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 循环或迭代器:哪个对于集合遍历更有效?的详细内容。更多信息请关注PHP中文网其他相关文章!