比擬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能有所贊助。假如有疑問可以留言評論辯論。