配列のサイズを指定する場合
ListToArray.java
ArrayList<String>arrayList=newArrayList<String>();for(inti=0;i<10000000;i++){// ← 1億arrayList.add("A");}longarray1Start=System.currentTimeMillis();arrayList.toArray(newString[arrayList.size()]);// ←←ここlongarray1End=System.currentTimeMillis();System.out.println("処理時間:"+(array1End-array1Start)+" ms");
結果
処理時間:3179 ms
配列のサイズを指定しない場合
ListToArray.java
ArrayList<String>arrayList=newArrayList<String>();for(inti=0;i<100000000;i++){// ← 1億arrayList.add("A");}longarray2Start=System.currentTimeMillis();arrayList.toArray(newString[0]);// ←←ここlongarray2End=System.currentTimeMillis();System.out.println("処理時間:"+(array2End-array2Start)+" ms");
結果
処理時間:3047 ms
え、ほぼ同じ・・・
その時のマシンの状況によるが、ほぼ同じ結果になる
評価する
パフォーマンス
処理時間はほぼ同じ
参照元をコピーするだけだからか。
可読性
arrayList.toArray(newString[arrayList.size()]);//明示的でわかりやすいarrayList.toArray(newString[0]);//0の意味を考えてしまう
結論
パフォーマンスはほぼ変わらないが、
可読性の観点でサイズを指定するべき