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("");
    }