List文档中的混淆点

Cra*_*lus 3 java collections linked-list list arraylist

我不清楚List的文档中的一点.

它说:

i)注意,这些操作可以与某些实现的索引值成比例地执行(例如,LinkedList类).
ii)因此,如果调用者不知道实现,则迭代遍历列表中的元素通常优选通过它进行索引.

请注意,我将(i)和(ii)放在报价中.

由于我们访问链表与数组随机访问的方式,Point(i)非常明显.

我不明白第(ii)点.
如果我们不了解实现,我们会通过更喜欢迭代器获得什么?
我的意思是,如果实现是一个性能LinkedList是否有任何差异比通过索引访问?
我想象不到,因为无论如何Iterator都会操纵LinkedList.
所以没有区别.

那么(ii)的建议在文档中的含义是什么?

JB *_*zet 6

链表的迭代器只能有一个指向列表中下一个节点的指针,并且每次next()调用时都转到下一个节点.它不是每次都从头开始.然而,如果您使用索引和调用get(i),则链接列表必须从头开始迭代,直到每次迭代时的第i个元素.

您错过的是ArrayList的迭代器实现和LinkedList的迭代器实现完全不同.