【发布时间】:2012-05-26 06:06:50
【问题描述】:
是的,这是一个老话题,但我仍然有些困惑。
在 Java 中,人们说:
如果我随机访问它的元素,ArrayList 比 LinkedList 快。我认为随机访问意味着“给我第 n 个元素”。为什么 ArrayList 更快?
-
LinkedList 的删除速度比 ArrayList 快。我理解这一点。 ArrayList 的速度较慢,因为需要重新分配内部备份数组。代码说明:
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.remove("b"); System.out.println(list.get(1)); //output "c" LinkedList 的插入速度比 ArrayList 快。这里的插入是什么意思?如果是指把一些元素往后移,然后把元素放在中间的空白处,ArrayList应该比LinkedList慢。如果插入只意味着一个 add(Object) 操作,这怎么可能慢?
【问题讨论】:
-
内部后备数组在删除时不需要重新分配,但平均需要移动 N/2 个元素。 '插入' 意味着两种情况,所以
LinkedList必须获胜。
标签: java arraylist doubly-linked-list