2005.11.21 株式会社四次元データ CTO 畠中晃弘
Java言語機能(JDK5.0(Tiger)新機能) 4章 enum
- 4.1. 簡単な enum
- 4.2. カスタムのメソッドの実装
- 4.3. 定数ごとに異なる振る舞いを持った enum
- 4.4. switch - case 文での利用
- 4.5. EnumMap
- 4.6. EnumSet
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);