Mapの簡易初期化

ふっと思いついた Map の初期化。

public static <K, V> Map<K, V> buildMap(Object... arguments) {
    Map<K, V> map = new HashMap<K, V>();
    if (arguments.length % 2 != 0) {
        throw new IllegalArgumentException("number of arguments must be even.");
    }

    for (int i = 0; i < arguments.length; i += 2) {
        K key = (K) arguments[i];
        V value = (V) arguments[i + 1];
        map.put(key, value);
    }
    return map;
}

使うときはこんな感じ。

Map<String, Integer> map = buildMap("a", 32, "b", 33, "c", 34);

TreeMap がよければ

Map<String, Integer> map = new TreeMap<String, Integer>(buildMap("a", 32, "b", 33, "c", 34));

う〜ん。ちょっと微妙かな。