Listから配列への変換,配列からListへの変換

for文で繰返さなくてもjava.util.Collection.toArray(Object[])メソッドを使えばListから配列へ一気に変換することができる.ちなみにtoArrayの引数は変換先の配列の一つ目のデータである.引数のないtoArray()メソッドを使うとClassCastExceptionが発生する.

import java.util.List;
import java.util.ArrayList;

public class Sam{
  public static void main(String[] args){
    List list=new ArrayList();
    list.add(new String("foo"));
    list.add(new String("bar"));
    list.add(new String("baz"));

    String[] array=(String[])list.toArray(new String[0]);
    //cf. http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Collection.html#toArray(java.lang.Object[])

    System.out.println("list: "+list);
    System.out.println("array: "+array[0]+" "+array[1]+" "+array[2]);
  }
}

実行結果
bash-2.05b$ java Sam
list: [foo, bar, baz]
array: foo bar baz
  

逆に,配列からListへ変換する場合はjava.util.Arrays.asList(Object[])を使用する.asListはクラスメソッドなので,インスタンスを生成しなくても使用可能である.

import java.util.List;
import java.util.Arrays;

public class Sam{
  public static void main(String[] args){
    String[] array={"foo","bar","baz"};
    List list=Arrays.asList(array);
    //cf. http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Arrays.html#asList(java.lang.Object[])

    System.out.println("list: "+list);
    System.out.println("array: "+array[0]+" "+array[1]+" "+array[2]);
  }
}

実行結果
bash-2.05b$ java Sam
list: [foo, bar, baz]
array: foo bar baz