开发时看到同事将ArrayList转为String的时候是手动遍历来做的,好奇为啥不实用jdk提供的方法呢,于是乎做了一个实验,两种方法的性能相差是相当惊人的:
import java.util.ArrayList;
import java.util.List;
public class ArrayListToStringArrComp {
private static List<String> baseData;
private static final int ARRAY_SIZE = 10000;
public static void main(String[] args) {
long begTime;
long endTime;
baseData = new ArrayList<String>();
for (int i = 0; i < ARRAY_SIZE; i++){
baseData.add(String.valueOf(i));
}
begTime = System.nanoTime();
String[] s2 = (String[])baseData.toArray(new String[ARRAY_SIZE]);
endTime = System.nanoTime();
System.out.println("自带方法耗时: " + (endTime - begTime));
begTime = System.nanoTime();
String[] s1 = new String[ARRAY_SIZE];
for(int i = 0; i < ARRAY_SIZE; i++){
s1[i] = baseData.get(i);
}
endTime = System.nanoTime();
System.out.println("手工遍历耗时: " + (endTime - begTime));
}
}
在我电脑上的输出是:
自带方法耗时: 89000
手工遍历耗时: 2005000
哪个更好,很显然了。
5017

被折叠的 条评论
为什么被折叠?



