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

Maps.asMap でシンプルにマップを初期化したい・・

Java

List の初期化は Arrays.asList() が可変長引数取るようになって、

List<String> list = Arrays.asList("a,b,c,d,e,f".split(","));

のように少し書きやすくなった。


Set についても同様で例えば、

Set<Integer> set = new LinkedHashSet<Integer>(Arrays.asList(4, 8,15,16,23,42));

のように書ける。
Google Collections Library の Lists.newArrayList とか Sets.newHashSet() とか使う方がスマートだけど・・


で、Mapも同じように初期化できないもんかなー。匿名の内部クラスで初期化、

Map<String, Integer> map = new HashMap<String, Integer>() {{
    put("one", 1);
    put("two", 2);
    put("three", 3);
}};

は悪魔だし、、

Map<String, Integer> map = Maps.asMap({"one"=>10, "two"=>2, "three"=>3});

とか、

Map<String, Integer> map = Maps.asMap({"one",10},{"two",2},{"three",3});

とか書きたいな〜