对Java ArrayList使用迭代器,而不是使用c样式的循环

Orrymr

当遍历LinkedList时,get(i)是O(N)操作。然后,我们使用Iterator对象遍历该列表就很有意义。但是对于ArrayList,get(i)为O(1)。因此,在那种情况下,我是否正确地说,使用ArrayList时,无论我们使用c样式循环还是Iterator对象都没有区别?

保罗·波丁顿

你是对的。您应该避免这样的循环

for (int i = 0; i < linkedList.size(); i++) {
    ... linkedList.get(i) ...
}

对于LinkedList因为get(i)O(n)使整个过程变得O(n^2)

对于ArrayList不要紧既iterator.next()get(i)O(1)

但是,您通常甚至不需要为a显式使用Iterator对象,LinkedList因为无论如何foreach循环都会在后台for (Object object : linkedList)使用a Iterator

Iterator仅在相对罕见的情况下(例如,过滤aListLinkedList并行遍历两个s)才需要显式地使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章