【发布时间】:2019-10-09 19:28:14
【问题描述】:
只是将整数添加到 Arraylist 和 Linkedlist 到最后一个位置,为什么添加 arrayList 比添加 linkedlist 更快?我编译了很多很多次,在arraylist中添加更快,为什么?
据我所知,ArrayList 将数组复制 2^n+1 大小。而linkedlist只改变节点
class Test1 {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>();
LinkedList<Integer> linkedList = new LinkedList<>();
addToList(arrayList);
System.out.println("-----------------");
addToList(linkedList);
}
public static void addToList(List list) {
long start = System.currentTimeMillis();
for (int i = 0; i < 5_000_000; i++) {
list.add(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
【问题讨论】:
-
见here。 P.S.:可能与操作所需的内存量有关。
-
加上通常的警告:stackoverflow.com/questions/2441079/… 首先添加到
linkedList,看看结果有何不同。 -
我看过那篇文章,据说在最后一个位置添加对于arraylist和linkedlist都是O(1)
-
那个帖子不正确。
LinkedList.add()是 O(N) 除非使用列表迭代器完成。
标签: java data-structures