読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

Java の List の初期値を1行で設定する方法

Java における List で、変数の宣言時に初期値を一緒に入れる方法がないかな~と思って探してた。

普通に書こうとするとこうなっちゃって鬱陶しいよね。

List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");

ちょうどドンズバな Gist があったので紹介。

同じネタを解説してる Qiita の記事と共に、使ってみた感想をば。

new ArrayList<String>() {{ add("a"); add("b"); add("c"); }};

以下のように改行すると構造が分かりやすい (上記 Qiita 記事より転載)。

List<String> list = new ArrayList<String>() {
    {
        add("AA");
        add("BB");
        add("CC");
    }
};

インスタンスイニシャライザという、インスタンスの生成時にメソッドを呼ぶ書き方らしい。毎回 add() と書いてるのが冗長っぽい感じがするのと、Eclipse でこの書き方をすると serialVersionUID 打てよ的なワーニングが出て鬱陶しい。

Arrays.<Integer>asList(1, 2, 3);

Arrays.asList() ってのは要素の追加・削除ができない固定サイズのリストを返すらしく、ArrayList のインスタンスにはならないんだとか。なんでこんな作りのユーティリティクラスになっているのかはよく知らない。リストを後から操作することがなくて、参照専用なのであれば、これが一番シンプルかな。

new ArrayList<Integer>(Arrays.<Integer>asList(1, 2, 3));

ArrayList のコンストラクタに Arrays.asList() を渡せば、追加・削除ができる ArrayList になる。これが一番良い感じかも。

新・明解Java入門 (明解シリーズ)

新・明解Java入門 (明解シリーズ)