比較Java數(shù)組和各種List的性能小結(jié)
話不多說(shuō),直接看示例代碼
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; } } //執(zhí)行迭代操作的匿名類(lèi) 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(); } } } }; //執(zhí)行隨機(jī)訪問(wèn)的匿名類(lèi) 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); } } } }; //執(zhí)行插入的匿名類(lèi) 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"); } } }; //執(zhí)行刪除的匿名類(lèi) 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; //測(cè)試數(shù)組的迭代和隨機(jī)訪問(wèn)操作 System.out.println("------測(cè)試數(shù)組------"); 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); //測(cè)試Vector System.out.println("------測(cè)試Vector------"); list= new Vector<String>(); list.addAll(coll); testList(list); //測(cè)試LinkedList System.out.println("------測(cè)試LinkedList------"); list= new LinkedList<String>(); list.addAll(coll); testList(list); //測(cè)試ArrayList System.out.println("------測(cè)試Vector------"); list= new ArrayList<String>(); list.addAll(coll); testList(list); } }
運(yùn)行結(jié)果如圖
從結(jié)果可以看出,對(duì)數(shù)組進(jìn)行隨機(jī)訪問(wèn)和迭代操作的速度是最快的;對(duì)LinkedList進(jìn)行插入和刪除操作的速度是最快的;對(duì)ArrayList進(jìn)行隨機(jī)訪問(wèn)的速度也很快;Vector類(lèi)在各方面沒(méi)有突出的性能,且此類(lèi)已不提倡使用了。
總結(jié)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)或者使用Java能有所幫助。如果有疑問(wèn)可以留言討論。
相關(guān)文章
Java對(duì)象轉(zhuǎn)json的方法過(guò)程解析
這篇文章主要介紹了Java對(duì)象轉(zhuǎn)json的方法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Maven在Windows中的配置以及IDE中的項(xiàng)目創(chuàng)建實(shí)例
下面小編就為大家?guī)?lái)一篇Maven在Windows中的配置以及IDE中的項(xiàng)目創(chuàng)建實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Spring Security OAuth 自定義授權(quán)方式實(shí)現(xiàn)手機(jī)驗(yàn)證碼
這篇文章主要介紹了Spring Security OAuth 自定義授權(quán)方式實(shí)現(xiàn)手機(jī)驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02java加載properties文件的六種方法總結(jié)
這篇文章主要介紹了java加載properties文件的六種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-05-05