你什么时候使用java.util.LinkedList

时间:2012-03-19 17:24:32

标签: java

  

可能重复:
  When to use LinkedList<> over ArrayList<>?

这是一个真正的尝试,知道何时使用LinkedList;

根据我的理解,因为java.util.LinkedList不支持随机访问,获取第n个元素的唯一方法是从1跳到(n-1)或使用get(n)本身非常效率低下。 那么为什么要使用LinkedList呢?除非您想使用ListIterator从两侧迭代集合,否则ArrayList将在大多数情况下使用?

3 个答案:

答案 0 :(得分:4)

想想这个方法:

List list = // choose your list here
list.add(0, new Object());

对于大型列表,LinkedList将大大超过ArrayList。这同样适用于

list.remove(0);

......还有很多其他方法。有关详情,建议您阅读java.util.Deque界面,该界面也由LinkedList

实施

答案 1 :(得分:2)

在这些类型的数据结构上考虑3个常见运算符:随机元素访问,添加元素和删除元素。

在LinkedList中,随机元素访问速度很慢(O(N)),但添加和删除速度很快(O(1)。对于ArrayList,反之亦然:随机元素访问速度很快(O(N)) ,但添加和删除元素的速度较慢。

您需要查看系统将执行哪些操作并使用适当的数据结构。

答案 2 :(得分:-1)

对于任意索引的插入/删除,

LinkedList更适合(与ArrayList相比)。从ArrayList插入或删除时,必须移动内部数组。对于LinkedList,这只是简单地重新指定节点的指针。