1. 程式人生 > >JAVA中 兩個經典的LIST簡單比較

JAVA中 兩個經典的LIST簡單比較

    閒來無事,寫了個小東西,對這兩個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));
    }

}

 對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是基於連結串列的,所以二者的效率在不同的應用上會不太一樣。