JavaのtoArrayメソッド
自分用のメモとして
Object[] toArray()
引数aの配列の長さがコレクションの要素数を上回っている場合、
すべての要素が格納され、最後の要素の次の要素の次の位置にnullが設定されます。
標準APIの日本語訳では、「最後の要素以降すべてがnullに設定される」とも受け取れる記述に
なっていますが、実際に設定されるnullは1つだけです。
/**
* sample code
* @param args コマンドラインパラメータ
*/
public void test(String args) {
Set set = new TreeSet();
List list = new ArrayList();
List list2 = new ArrayList();
set.add("java");
set.add("perl");
list.add("perl");
list.add("java");
list.add("ruby");
list.add("c++");
// list2には何も入れない
// setから配列を取得
Object setArray = set.toArray();
show(setArray);
// listから配列を取得
Object listArray = list.toArray();
show(listArray);
// 格納先の配列数が不足している場合
Object listArray2 = new Object[2];
listArray = list.toArray(listArray2);
show(listArray);
show(listArray2);
// 格納先の配列数が余っている場合
Object setArray2 = new Object[4];
setArray2[0] = "c++";
setArray2[1] = "ruby";
setArray2[2] = "java";
setArray2[3] = "perl";
setArray = set.toArray(setArray2);
show(setArray);
show(setArray2);
// 要素がなくてもnullは返されない
listArray = list2.toArray();
show(listArray);
}
/**
* 配列の全要素を表示する
* @param all Objectが格納された配列
*/
private void show(Object all) {
// 配列の要素数分
for (int i = 0; i < all.length; i++) {
System.out.println(all[i]);
}
System.out.println("");
}