比較Java數組和各種List的效能小結_java

來源:互聯網
上載者:User

話不多說,直接看範例程式碼

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能有所協助。如果有疑問可以留言討論。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.