在链接列表中,每个元素都有一个指向下一个元素的指针:
head -> item1 -> item2 -> item3 -> etc.
要访问
item3,您可以清楚地看到您需要从头经过每个节点直到到达item3,因为您不能直接跳转。
因此,如果我想打印每个元素的值,请编写以下代码:
for(int i = 0; i < 4; i++) { System.out.println(list.get(i));}这是怎么回事:
head -> print headhead -> item1 -> print item1head -> item1 -> item2 -> print item2head -> item1 -> item2 -> item3 print item3
这是 非常低效的, 因为每次索引时,它都会从列表的开头重新开始并遍历每个项目。这意味着您的复杂性实际上
O(N^2)只是遍历列表!
如果相反,我这样做:
for(String s: list) { System.out.println(s);}那么会发生什么:
head -> print head -> item1 -> print item1 -> item2 -> print item2 etc.
全部在一个遍历中,即
O(N)。
现在,转到的另一种实现,
List该实现
ArrayList由一个简单数组支持。在这种情况下,上述两个遍历都是等效的,因为数组是连续的,因此它允许随机跳转到任意位置。



