【发布时间】:2013-07-25 00:36:57
【问题描述】:
我很好奇在LinkedList 开头插入元素的时间复杂度。我知道 LinkedList 本身会将现有元素向右移动一个索引,但要做到这一点,它会进行与列表中现有元素一样多的迭代吗?
另外,在开头插入offerFirst的最好方法是什么?
【问题讨论】:
-
为什么要移动剩余的元素? head 将指向新元素,其 next 将指向前一个 head。所以不应该是O(1)吗?
-
像在 ArrayList 中一样移动,所以以前的元素 0 现在是 1
-
链表不是数组。你正在创建我假设一个队列。队列可以使用链表或数组来实现。链表只是对指向内存的指针的操作。不涉及转移。
-
在 LinkedList 的任何一端插入元素以及删除或检索都非常快。如果您想了解更多类似 offerFirst 的方法,请参阅 Internal life of LinkedLIst 教程
标签: java collections linked-list