LinkedList与ArrayList的比较
这个问题在这里已经有了答案:
链接列表插入确实速度更快,问题出在您的示例中。 在你的代码中,你通过追加到所有的时间来插入。 对于ArrayList,它和LinkedList一样简单。 你应该做的是建立一个说5000个项目的清单,然后开始插入中间。 这里array变慢 - 你必须在插入位置之后将整个数组的其余部分全部移位。 这是什么将显示差异。 分析事情的工作原理,不难理解为什么。 这是修改的代码:
import java.util.Date;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.List;
public class Prob {
public static void main(String[] args) {
long lStartTime = new Date().getTime();
System.out.println("lStartTime:: " + lStartTime);
List<Integer> integerList = new LinkedList<Integer>();
for (int i = 0; i < 5000; i++) {
integerList.add(0, i);
}
for (int i = 0; i < 100000; i++) {
integerList.add(1000, i);
}
long lEndTime = new Date().getTime();
System.out.println("lEndTime:: " + lEndTime);
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);
}
}
LinkedList
在插入时不比ArrayList
快。 ArrayList
由数组支持,因此插入元素很简单。 插入LinkedList
需要创建一个新的Entry
实例,该实例较慢。
插入到ArrayList
的唯一时间可能会比较慢,因为插入导致ArrayList
容量增加,这需要创建一个新数组并将旧数组复制到它。