当遍历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
仅在相对罕见的情况下(例如,过滤aList
或LinkedList
并行遍历两个s)才需要显式地使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句