Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2010/11/12 (Fri)

一組のMapを作る

| 一組のMapを作る - ひとり開発日記。 を含むブックマーク はてなブックマーク - 一組のMapを作る - ひとり開発日記。

という、よくあるテーマ。

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;

public class HogeMain {

    public static void main(String[] args) {
        // 従来のやりかた
        Map<Integer, String> map1 = new HashMap<Integer, String>(Collections.singletonMap(1, "one"));
        // Google Guava使用
        Map<Integer, String> map2 = Maps.newHashMap(ImmutableMap.of(1, "one"));

        System.out.println(map1);
        System.out.println(map2);
    }

}

結果。

{1=one}
{1=one}

guava-librariesは便利過ぎますネ。

        // 空のMap
        Map<Integer, String> map1 = Collections.emptyMap();
        // Google Guava使用
        Map<Integer, String> map2 = ImmutableMap.of();

        // SingletonのList
        List<Long> list1 = Collections.singletonList(1L);
        // Google Guava使用
        List<Long> list2 = ImmutableList.of(1L);

従来ので全然OKなんですけど、CollectionsのemptyMap / emptyList / emptySet、singletonMap / singletonList / singletonで作られるインスタンスがimmutableであるってことが、伝わりづらいのです。 そこら辺、Google Guavaはクラスの名前の時点でそれが明白、流石Googleの設計者だなぁ、という感じです。

トラックバック - http://program.g.hatena.ne.jp/halflite/20101112