JAVA中 兩個經典的LIST簡單比較
阿新 • • 發佈:2019-02-12
閒來無事,寫了個小東西,對這兩個LIST進行簡單的比較,分別對他們執新增元素和查詢操作,之中用了多型的思想,減少了一些重複的程式碼,下面是程式程式碼和輸出結果。
import java.util.*;
publicclass Test {
privatestaticfinalint INSERT =0;
privatestaticfinalint SEARCH = 1;
privatestaticint total =500000;
privatestatic Random random =new Random();
publicstaticlong test(List list,int flag){ //測試方法
long t1 = System.currentTimeMillis();
if(flag == 0)
insert(list);
elseif (flag ==1)
search(list);
return System.currentTimeMillis() - t1;
}
publicstaticvoid insert(List list){ //對list進行寫入的方法
for(int i=0;i<total;i++){
list.add(new Integer(random.nextInt(10)));
}
}
publicstaticvoid search(List list){ //對list進行查詢的方法
for(int i=0;i<total;i++){
list.contains(new Integer(random.nextInt(10)));
}
}
publicstaticvoid main(String[] args){
List arrayList =new ArrayList();
List linkedList =new LinkedList();
System.gc();
System.out.println( "對ArrayList進行"+total+"次新增用時:"+test(arrayList,INSERT));
System.out.println("對LinkedList進行"+total+"次新增用時:"+test(linkedList,INSERT));
System.out.println("對ArrayList進行"+total+"次查詢用時:"+test(arrayList,SEARCH));
System.out.println("對LinkedList進行"+total+"次查詢用時:"+test(linkedList,SEARCH));
}
}
publicclass Test {
privatestaticfinalint INSERT =0;
privatestaticfinalint SEARCH = 1;
privatestaticint total =500000;
privatestatic Random random =new Random();
publicstaticlong test(List list,int flag){ //測試方法
long t1 = System.currentTimeMillis();
if(flag ==
insert(list);
elseif (flag ==1)
search(list);
return System.currentTimeMillis() - t1;
}
publicstaticvoid insert(List list){ //對list進行寫入的方法
for(int i=0;i<total;i++){
list.add(new Integer(random.nextInt(10)));
}
}
publicstaticvoid
for(int i=0;i<total;i++){
list.contains(new Integer(random.nextInt(10)));
}
}
publicstaticvoid main(String[] args){
List arrayList =new ArrayList();
List linkedList =new LinkedList();
System.gc();
System.out.println(
System.out.println("對LinkedList進行"+total+"次新增用時:"+test(linkedList,INSERT));
System.out.println("對ArrayList進行"+total+"次查詢用時:"+test(arrayList,SEARCH));
System.out.println("對LinkedList進行"+total+"次查詢用時:"+test(linkedList,SEARCH));
}
}
對ArrayList進行100000次新增用時:47
對LinkedList進行100000次新增用時:125
對ArrayList進行100000次查詢用時:166
對LinkedList進行100000次查詢用時:128
對ArrayList進行500000次新增用時:344
對LinkedList進行500000次新增用時:531
對ArrayList進行500000次查詢用時:422
對LinkedList進行500000次查詢用時:219
ArrayList是基於陣列實現的,而LinkedList是基於連結串列的,所以二者的效率在不同的應用上會不太一樣。