Java数组和各种List的性能比较

Java数组和各种List的性能比较

  以下程序分别对Java数组、ArrayList、LinkedList和Vector进行随机访问和迭代等操作,并比较这种集合的性能。

package cn.lion.test; 
public class PerformanceTest {
        
         privatestatic final int SIZE =100000;
         publicstatic abstract class Test{
                   privateString operation;
                   publicTest(String operation){
                            this.operation= operation;
                   }
                   publicabstract void test(List list);
                   publicString getOperation(){
                            returnoperation;
                   }
         }
         //执行迭代操作的匿名类
         staticTest iterateTest = new Test("iterate"){
                   publicvoid test(List list){
                            for(inti=0; i<10; i++){
                                     Iteratorit = list.iterator();
                                     while(it.hasNext()){
                                               it.next();
                                     }
                            }
                   }
         };
         //执行随机访问的匿名类
         staticTest getTest = new Test("get"){
                   publicvoid test(List list){
                            for(inti=0; i list){
                            ListIteratorit = list.listIterator(list.size()/2);
                            for(inti=0; i list){
                            ListIteratorit = list.listIterator();
                            while(it.hasNext()){
                                     it.next();
                                     it.remove();
                            }
                   }
         };
         staticpublic void testArray(List list){
                   Test[]tests = {iterateTest, getTest};
                   test(tests,list);
         }
         staticpublic void testList(List list){
                   Test[]tests = {insertTest, iterateTest, getTest, removeTest};
                   test(tests,list);
         }
         staticpublic void test(Test[] tests, List list){
                   for(inti=0; ilist = null;
                   //测试数组的迭代和随机访问操作
                   System.out.println("------测试数组------");
                   String[]tstr = new String[SIZE];
                   Arrays.fill(tstr,"lion");
                   list= Arrays.asList(tstr);
                   testArray(list);
                  
                   tstr= new String[SIZE/2];
                   Collectioncoll = Arrays.asList(tstr);
                  
                   //测试Vector
                   System.out.println("------测试Vector------");
                   list= new Vector();
                   list.addAll(coll);
                   testList(list);
                  
                   //测试LinkedList
                   System.out.println("------测试LinkedList------");
                   list= new LinkedList();
                   list.addAll(coll);
                   testList(list);
                  
                   //测试ArrayList
                   System.out.println("------测试Vector------");
                   list= new ArrayList();
                   list.addAll(coll);
                   testList(list);
         }
}

  程序运行结果如图

Java数组和各种List的性能比较_第1张图片

从结果可以看出,对数组进行随机访问和迭代操作的速度是最快的;对LinkedList进行插入和删除操作的速度是最快的;对ArrayList进行随机访问的速度也很快;Vector类在各方面没有突出的性能,且此类已不提倡使用了。

你可能感兴趣的:(J2EE,Java,ArrayList,LinkedList,Vector)