目次へ

2005.11.21 株式会社四次元データ CTO 畠中晃弘

4.5. EnumMap

EnumMap は enum 型の値をキーとする Map です。EnumMap はジェネリックなクラスであり、キーとして使用する型、また必要があれば通常の Map と同じように値の型を指定することができます。また、EnumMap のコンストラクタでは、キーとして使用する enum 型のクラスオブジェクトを引数で渡す必要があります。

EnumMap<Color, String> map = new EnumMap<Color, String>(Color.class);
map.put(Color.RED, "赤");
map.put(Color.WHITE, "白");
System.out.println(map.get(Color.RED)); // 「赤」と表示される

EnumMap は内部的には指定された enum 型の定数の個数を要素数とする配列で実現されており、その他の Map より速く処理することができます。

4.6. EnumSet

EnumSet は enum 型の値を保持することができる Set です。EnumSet はジェネリックなクラスであり、保持する enum 型を指定することができます。EnumSet ではビット列でどの値が Set に含まれているかを管理しているため、メモリ使用効率や処理速度がその他の Set よりも優れています。

EnumSet のインスタンスは new オペレータで生成することはできません。EnumSet クラスの static なメソッドを使用して生成を行います。

メソッド 説明
noneOf(Class<E> elementType) 指定した enum 型用の空の EnumSet を返します。
allOf(Class<E> elementType) 指定した enum 型用の全ての定数要素を含んだ EnumSet を返します。
copyOf(EnumeSet<E> s) 指定した EnumSet と同じ要素をもつ EnumSet を返します。
copyOf(Collection<E> c) 指定した Collection と同じ要素を持つ EnumSet を返します。
complementOf(EnumSet<E> s) 指定した EnumSet の補集合の EnumSet を返します。
of(E e) 引数で指定した要素を持つ EnumSet を返します。
of(E e1, E e2)
of(E e1, E e2, E e3)
of(E e1, E e2, E e3, E e4)
of(E e1, E e2, E e3, E e4, E e5)
of(E first, E... rest)
range(E from, E to) from から to までの範囲の要素を含む EnumSet を返します。

たとえば、Color 型の要素を保持でき、Color.BLACK を要素にもつ EnumSet を作成するには、次のようにします。

EnumSet<Color> set = EnumSet.of(Color.BLACK);

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp