【发布时间】:2012-08-17 22:54:17
【问题描述】:
当我跑步时(分别):
package containers;
import java.util.*;
public static void main(String[] args) {
List<Integer> arLst = new ArrayList<Integer>();
List<Integer> lnLst = new LinkedList<Integer>();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
arLst.add(i);
}
System.out.println("Array list: "+Long.toString(System.currentTimeMillis()-start));
start = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
lnLst.add(i);
}
System.out.println("Linked list: "+Long.toString(System.currentTimeMillis()-start));
}
我得到大致相同的执行时间。 我知道 LinkedList 的添加时间应该更快。 我想知道为什么..(对于中间插入和最后一个元素来说,这是有道理的 - 因为数组知道在 O(1) 中插入的位置,不像 LinkedList 必须遍历整个列表,我记得)。
【问题讨论】:
-
两个列表都是arraylist,你只添加到第一个。那是你的真实代码吗?假设这是一个错字,您应该在得出结论之前阅读this post。
-
为什么你的代码中的两个列表都是
ArrayList? -
我只看到
ArrayList而看不到LinkedList -
您为什么认为
LinkedList的添加时间应该更快?另外,必读:stackoverflow.com/questions/504103/… -
您应该测量列表创建后的时间。衡量创建它们需要多长时间是无关紧要的。
标签: java collections