你什么时候会使用java.util.LinkedList
可能重复:
何时通过ArrayList <>使用LinkedList <>?
这是一个真正的尝试,知道什么时候会使用LinkedList;
据我所知,因为java.util.LinkedList不支持随机访问,所以获得第n个元素的唯一方法是从1跳到(n-1)或使用get(n),这本身效率非常低。 那么为什么会使用LinkedList呢? 除非你想用ListIterator从两边迭代集合,否则一个ArrayList可以用于大多数情况?
想想这个方法:
List list = // choose your list here
list.add(0, new Object());
对于大型列表, LinkedList
将严重超出ArrayList
。 这同样适用
list.remove(0);
...和许多其他方法。 有关更多信息,我建议阅读关于java.util.Deque
接口,该接口也由LinkedList
实现
在这些数据结构上考虑3种常见操作符:随机元素访问,添加元素和删除元素。
在LinkedList中,您的随机元素访问速度很慢(O(N)),但添加和删除速度很快(O(1)。对于ArrayList,反之亦然:随机元素访问速度很快(O(N)),并删除元素更慢。
您需要查看您的系统将执行哪些操作并使用适当的数据结构。
对于任意索引的插入/删除, LinkedList
更适合(与ArrayList
相比)。 在从ArrayList
插入或删除时,必须移动内部数组。 对于LinkedList
,它只是简单地重新指定节点的指针。