程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 比擬Java數組和各類List的機能小結

比擬Java數組和各類List的機能小結

編輯:關於JAVA

比擬Java數組和各類List的機能小結。本站提示廣大學習愛好者:(比擬Java數組和各類List的機能小結)文章只能為提供參考,不一定能成為您想要的結果。以下是比擬Java數組和各類List的機能小結正文


話不多說,直接看示例代碼

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<String> list);
     publicString getOperation(){
       returnoperation;
     }
   }
   //履行迭代操作的匿名類
   staticTest iterateTest = new Test("iterate"){
     publicvoid test(List<String> list){
       for(inti=0; i<10; i++){
          Iterator<String>it = list.iterator();
          while(it.hasNext()){
            it.next();
          }
       }
     }
   };
   //履行隨機拜訪的匿名類
   staticTest getTest = new Test("get"){
     publicvoid test(List<String> list){
       for(inti=0; i<list.size(); i++){
          for(intk=0; k<10; k++){
            list.get(k);
          }
       }
     }
   };
   //履行拔出的匿名類
   staticTest insertTest = new Test("insert"){
     publicvoid test(List<String> list){
       ListIterator<String>it = list.listIterator(list.size()/2);
       for(inti=0; i<SIZE; i++){
          it.add("lion");
       }
     }
   };
   //履行刪除的匿名類
   staticTest removeTest = new Test("remove"){
     publicvoid test(List<String> list){
       ListIterator<String>it = list.listIterator();
       while(it.hasNext()){
          it.next();
          it.remove();
       }
     }
   };
   staticpublic void testArray(List<String> list){
     Test[]tests = {iterateTest, getTest};
     test(tests,list);
   }
   staticpublic void testList(List<String> list){
     Test[]tests = {insertTest, iterateTest, getTest, removeTest};
     test(tests,list);
   }
   staticpublic void test(Test[] tests, List<String> list){
     for(inti=0; i<tests.length; i++){
       System.out.print(tests[i].getOperation()+ "操作:");
       longt1 = System.currentTimeMillis();
       tests[i].test(list);
       longt2 = System.currentTimeMillis();
       System.out.print(t2-t1+ "ms");
       System.out.println();
     }
   }
   publicstatic void main(String[] args){
     
     List<String>list = null;
     //測試數組的迭代和隨機拜訪操作
     System.out.println("------測試數組------");
     String[]tstr = new String[SIZE];
     Arrays.fill(tstr,"lion");
     list= Arrays.asList(tstr);
     testArray(list);
     
     tstr= new String[SIZE/2];
     Collection<String>coll = Arrays.asList(tstr);
     
     //測試Vector
     System.out.println("------測試Vector------");
     list= new Vector<String>();
     list.addAll(coll);
     testList(list);
     
     //測試LinkedList
     System.out.println("------測試LinkedList------");
     list= new LinkedList<String>();
     list.addAll(coll);
     testList(list);
     
     //測試ArrayList
     System.out.println("------測試Vector------");
     list= new ArrayList<String>();
     list.addAll(coll);
     testList(list);
   }
}

運轉成果如圖

從成果可以看出,對數組停止隨機拜訪和迭代操作的速度是最快的;對LinkedList停止拔出和刪除操作的速度是最快的;對ArrayList停止隨機拜訪的速度也很快;Vector類在各方面沒有凸起的機能,且此類已不倡導應用了。

總結

以上就是本文的全體內容,願望對年夜家進修或許應用Java能有所贊助。假如有疑問可以留言評論辯論。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved