package toolsTest;
import java.util.ArrayList;
import java.util.LinkedList;
public class InsertElementToList {
public static void main(String[] args) {
final int N = 25000;
//使用ArrayList对象插入新元素
ArrayList<Integer> al = new ArrayList<Integer>();
long starttime = System.currentTimeMillis();
for (int i = 0; i < N ; i++) {
al.add(0,new Integer(i));
}
long endTime = System.currentTimeMillis();
System.out.println("User ArrayList:" +( endTime - starttime ) + " ms");
//使用LinkList对象插入新元素
LinkedList<Integer> ll = new LinkedList<Integer>();
starttime = System.currentTimeMillis();
for (int i = 0; i < N ; i++) {
ll.add(0,new Integer(i));
}
endTime = System.currentTimeMillis();
System.out.println("User LinkedList:" +( endTime - starttime ) + " ms");
}
import java.util.ArrayList;
import java.util.LinkedList;
public class InsertElementToList {
public static void main(String[] args) {
final int N = 25000;
//使用ArrayList对象插入新元素
ArrayList<Integer> al = new ArrayList<Integer>();
long starttime = System.currentTimeMillis();
for (int i = 0; i < N ; i++) {
al.add(0,new Integer(i));
}
long endTime = System.currentTimeMillis();
System.out.println("User ArrayList:" +( endTime - starttime ) + " ms");
//使用LinkList对象插入新元素
LinkedList<Integer> ll = new LinkedList<Integer>();
starttime = System.currentTimeMillis();
for (int i = 0; i < N ; i++) {
ll.add(0,new Integer(i));
}
endTime = System.currentTimeMillis();
System.out.println("User LinkedList:" +( endTime - starttime ) + " ms");
}
}
测试结果:
User ArrayList:238 ms
User LinkedList:24 ms
测试说明:
LinkedList比ArrayList速度要快得多,可以获得更高的效率。这是因为当试图在ArrayList对象的起始处添加一个新的元素是,
系统将会把所有已存在的元素向后推移,这个动作是非常耗时的,而这个动作对LinkList对象而言却是十分廉价的,因为LinkList
对象中的所有元素彼此之间都是通过引用互相连接的,所以在其头部添加一个元素时,在该元素中添加一个指向原LinkList对象
头部的连接引用即可,进而才有了上面的输出结果。