这是一个真正的尝试,知道何时使用LinkedList;
根据我的理解,因为java.util.LinkedList不支持随机访问,获取第n个元素的唯一方法是从1跳到(n-1)或使用get(n)本身非常效率低下。 那么为什么要使用LinkedList呢?除非您想使用ListIterator从两侧迭代集合,否则ArrayList将在大多数情况下使用?
答案 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
,这只是简单地重新指定节点的指针。