首先:
linkedListSun
JDK中实现的有效地具有到最后一个元素以及到第一个元素的链接(只有一个
head条目,但
head.previous指向最后一个元素)。这意味着即使在最坏的情况下,通过列表导航到索引所指示的元素也应执行n
/ 2次操作。这也是一个双向链表。
除此之外:
linkedList因为不需要遍历所有元素,所以简单地将O(1)插入a的开头或结尾。
在其他任何地方插入/删除都取决于您执行的方式!如果使用
Iterator(的a
ListIterator表示加法),则该操作也可以是O(1),因为该操作
Iterator已经具有对相关条目的引用。
但是,如果您正在使用
add(int,E)或
remove(int),
linkedList则将必须
找到 相关条目(O(n)), 然后 删除元素(O(1)),因此整个操作将为O(n)。



