【发布时间】:2013-12-23 23:21:09
【问题描述】:
我想了解更多关于数据结构及其实现的信息(用 JAVA 语言)。今天我写了一个测试来比较(时间比较)ADT List 的不同实现。具体我比较了add方法,这是我的测试:
@Test
public void testTime() {
long i = 10000000;
long INITIALIZED_VALUE=5000000;
List<Integer> arrayBasedList = new ArrayList<Integer>();
List<Integer> linkedBasedList = new LinkedList<Integer>();
List<Integer> arrayBasedInitialedSizeList = new ArrayList<Integer> (INITIALIZED_VALUE);
long t1 = System.currentTimeMillis();
for (int index = 0; index <= i; index++) {
arrayBasedList.add(index);
}
long t1End = System.currentTimeMillis() - t1;
long t2 = System.currentTimeMillis();
for (int index = 0; index <= i; index++) {
linkedBasedList.add(index);
}
long t2End = System.currentTimeMillis() - t2;
long t3 = System.currentTimeMillis();
for (int index = 0; index <= i; index++) {
arrayBasedInitialedSizeList.add(index);
}
long t3End = System.currentTimeMillis() - t3;
System.out.println("ArrayBased: " + t1End);
System.out.println("LinkedList:" + t2End);
System.out.println("ArrayBasedInitializedSize: " + t3End);
System.out.println("End");
}
我得到了这个结果:
ArrayBased: 5681 LinkedList:12830 ArrayBasedInitializedSize: 858
为什么 LinkedList 比 ArrayList 实现慢?我认为用于 LinkedList 实现的 add 方法比用于 Array 实现的 add 方法快。
谁能解释一下为什么数组的add方法比linkedlist快?
谢谢
阿莱西奥
【问题讨论】:
标签: java performance list arraylist linked-list