今天遇到要用到將數組轉換成list,看了一下Arrays里面有一個方法asList可以將數組轉換成list。但是我們亦可以用for循環把數組轉換成list。經過試驗發現兩種方法性能相差不較大。
試驗代碼:
packagecom.zhou.utils.test;
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.List;
publicclassArrayToListTest {
publicstaticvoidmain(String[]args) {
Stringstr="1,1,1,1,1,1,11,1,1,1,1,1,1,1,11,1,1,1,1,1,1,11,1,1,1,1,1,11,1,1,,,2,2,22,2,2,2,22,2,2,2,2,22,2,2,2,2,2,22,2,2,2,2,2,22,2,2,2,2,2,2,22,,,2,2,2,22,2,,2,2,2,2,2,22,2,2,2,2,22,2,2,2,2,22,2,2,2,2,2,22,2,2,2,2,22,2,,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,,2,2,,2,2,2,2,2,2,2,2,,2,2,2,2,,2,2,2,2,2,,2,2,2";
useArraysUtils(str);
useFor(str);
}
publicstaticvoiduseArraysUtils(Stringstr){
longstart=System.nanoTime();
String[]strs=str.split(",");
Lista=Arrays.asList(strs);
longend=System.nanoTime();
System.out.println("========="+a.size()+"=====useTime:"+(end-start));
}
publicstaticvoiduseFor(Stringstr){
longstart=System.nanoTime();
Listlist=newArrayList();
String[]strs=str.split(",");
for(Stringstr1:strs){
list.add(str1);
}
longend=System.nanoTime();
System.out.println("========="+list.size()+"=====useTime:"+(end-start));
}
}
輸出結果:
=========158=====useTime:1365970
=========158=====useTime:400812
第一個是用java的util類里面的方法,第二個是自己寫的for循環,相差在三倍
我們在換短一點的str,這次我們用
Stringstr="2,2,2,2,2";
得出結果如下:
=========5=====useTime:472153
=========5=====useTime:60424
相差甚大。由此可見Arrays.asList方法的性能不如for循環。
所以我們在開發的時候不一定要用java提供的方法。我們自己寫的也許性能更好