开发时看到同事将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
哪个更好,很显然了。