今天遇到要用到将数组转换成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提供的方法。我们自己写的也许性能更好