List.toArray()/toArray(T []arg0) - Listから配列への変換例
2010/06/09 18:25Update
リストなどのコレクションを配列に変換したい場合はあります。方法としては、for文を使って各要素を取り出してから配列にセットするかList.toArray()メソッドを利用するなどの方法があります。
例:
方法1の場合
方法2の場合
リストの要素は確定できない場合
パラメータのあるlist.toArrayメソッドの形は以下のようになります。
パラメータ T []arg0 は配列の形になっていますが、利用する際、
か
どちらでもいいらしい。
java.util.Listの実装クラスの一つjava.util.ArrayListを覗いてみると、以下のような定義になっています。
見れば分かると思いますが、パラメータに指定する配列のサイズは リストのサイズにより小さかった場合、配列をリサイズしているように見えます。
なので、list.toArray(new SomeType[list.size()])のほうは実行速度は小さいながら速いです。
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
方法1の場合
String [] arr = new String[list.size()];
for (int i=0; i<list.size(); i++) {
String ele = (String)list.get(i);
arr[i] = ele;
}
方法2の場合
String [] arr = list.toArray(new String[0]); //String [] arr = list.toArray(new String[list.size()]);
リストの要素は確定できない場合
Object [] arr = list.toArray();
パラメータのあるlist.toArrayメソッドの形は以下のようになります。
T[] toArray(T []arg0)
パラメータ T []arg0 は配列の形になっていますが、利用する際、
SomeType [] arr = list.toArray(new SomeType[0]);
か
SomeType [] arr = list.toArray(new SomeType[list.size()]);
どちらでもいいらしい。
java.util.Listの実装クラスの一つjava.util.ArrayListを覗いてみると、以下のような定義になっています。
public Object[] toArray(Object aobj[])
{
if(aobj.length < size)
aobj = (Object[])(Object[])Array.newInstance(((Object) (aobj)).getClass().getComponentType(), size);
System.arraycopy(((Object) (elementData)), 0, ((Object) (aobj)), 0, size);
if(aobj.length > size)
aobj[size] = null;
return aobj;
}
見れば分かると思いますが、パラメータに指定する配列のサイズは リストのサイズにより小さかった場合、配列をリサイズしているように見えます。
なので、list.toArray(new SomeType[list.size()])のほうは実行速度は小さいながら速いです。
Sponsored Link
- Relative Articles
- Javaコレクション・フレームワーク概要 - (2008/10/21 18:27)
- Java List/ArrayListよくある使い方 - (2009/01/30 13:02)
- Collections.sortでList要素をソートさせる - (2009/01/30 14:31)
- Java Map/HashMapよくある使い方 - (2009/02/12 17:18)
- Java Set/HashSetよくある使い方 - (2009/02/19 13:35)
- Java List - 要素の削除方法及び要素の削除注意点 - (2010/06/03 15:18)
- File.listFiles/FileFilterでファイル選別 - (2009/03/23 18:20)
- Javaサーブレットリスナー | ServletContextListener実装 - Webアプリの初期化処理 - (2009/08/12 18:11)
- Java+Tomcatでタスクを定期的に実行する方法 実装一例 - (2011/11/10 19:21)
- Java JVMオプション一覧 - (2009/06/29 14:54)