你什么时候用 java.util.LinkedList

When would you use a java.util.LinkedList

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
When to use LinkedList<> over ArrayList<>?

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

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


想想这个方法:

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

对于大名单来说,LinkedList将大大超过ArrayList的表现。同样适用于

1
list.remove(0);

…还有很多其他的方法。有关更多信息,我建议阅读有关java.util.Deque接口的内容,该接口也由LinkedList实现。


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

在LinkedList中,您的随机元素访问很慢(o(n)),但是添加和删除很快(o(1)。对于arraylist,则相反:随机元素访问很快(o(n)),但添加和删除元素的速度较慢。

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


LinkedList更适合(与ArrayList相比)插入/删除任意索引。当从ArrayList中插入或删除时,必须移动内部数组。对于LinkedList,这只是简单地重新调用节点指针的问题。