モジュール java.base
パッケージ java.util

クラスEnumSet<E extends Enum<E>>

すべての実装されたインタフェース:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

public abstract class EnumSet<E extends Enum<E>>
extends AbstractSet<E>
implements Cloneable, Serializable
列挙型と一緒に使用するための特殊なSet実装です。 enumセット内の要素はすべて、セットの作成時に、指定された単一のenum型から明示的または暗黙的に生成される必要があります。 enumセットは、内部ではビット・ベクトルとして表現されます。 この表現は、非常に簡潔かつ効率的です。 このクラスの領域や時間性能は、従来ののintベースの「ビット・フラグ」と比較しても十分に高品質で、型保証された代替として使用可能です。 引数もenumセットであれば、一括オペレーション(containsAllretainAllなど)でさえ非常に高速に実行できます。

iteratorメソッドにより返されるイテレータは、要素を自然順序 (enum定数の宣言された順序)に従ってトラバースします。 返されるイテレータは、弱一貫性を保持します。これがConcurrentModificationExceptionをスローすることはありません。また、反復の進行中に実行されるセットへの変更の影響を表示することも、非表示にすることも可能です。

null要素は許可されません。 null要素を挿入しようとすると、NullPointerExceptionがスローされます。 ただし、null要素の存在をテストしたり、削除を試みる場合は正常に機能します。

大半のコレクション実装と同様、EnumSetは同期されません。 複数のスレッドが並行してenumセットにアクセスし、それらのスレッドの少なくとも1つがセットを変更する場合には、外部で同期をとる必要があります。 通常、これは、enumセットを自然にカプセル化するいくつかのオブジェクトで同期をとることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedSet(java.util.Set<T>)メソッドを使用してセットを「ラップ」する必要があります。 これは、偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。

 Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
 

実装にあたってのノート: 基本のオペレーションはすべて一定時間に実行されます。 これらは通常、HashSetの対応するオペレーションよりもずっと高速に動作します(ただし保証外)。 引数もenumセットであれば、一括オペレーションでさえ一定時間に実行されます。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.5
関連項目:
EnumMap, 「直列化されたフォーム」
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    static <E extends Enum<E>>
    EnumSet<E>
    allOf​(Class<E> elementType)
    指定された要素型のすべての要素を含むenumセットを作成します。
    EnumSet<E> clone()
    このセットのコピーを返します。
    static <E extends Enum<E>>
    EnumSet<E>
    complementOf​(EnumSet<E> s)
    指定されたenumセットと同じ要素型を使用してenumセットを作成します。最初は、指定されたセットに含まれないこの型の要素がすべて含められます。
    static <E extends Enum<E>>
    EnumSet<E>
    copyOf​(Collection<E> c)
    指定されたコレクションから初期化されたenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    copyOf​(EnumSet<E> s)
    指定されたenumセットと同じ要素型を使用して、enumセットを作成します。最初は、同じ要素を含むenumセットを作成します(同じ要素が存在する場合)。
    static <E extends Enum<E>>
    EnumSet<E>
    noneOf​(Class<E> elementType)
    指定された要素型を使用して空のenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E e)
    指定された要素を最初に含むenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E e1, E e2)
    指定された要素が最初に含まれるenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E first, E... rest)
    指定された要素が最初に含まれるenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E e1, E e2, E e3)
    指定された要素が最初に含まれるenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E e1, E e2, E e3, E e4)
    指定された要素が最初に含まれるenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    of​(E e1, E e2, E e3, E e4, E e5)
    指定された要素が最初に含まれるenumセットを作成します。
    static <E extends Enum<E>>
    EnumSet<E>
    range​(E from, E to)
    指定された2つの端点により定義される範囲内の要素すべてを最初に含むenumセットを作成します。

    クラス java.util.AbstractSetで宣言されたメソッド

    equals, hashCode, removeAll

    クラス java.util.AbstractCollectionで宣言されたメソッド

    add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString

    クラス java.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait

    インタフェース java.util.Collectionで宣言されたメソッド

    parallelStream, removeIf, stream, toArray

    インタフェース java.lang.Iterableで宣言されたメソッド

    forEach

    インタフェース java.util.Setで宣言されたメソッド

    add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
  • メソッドの詳細

    • noneOf

      public static <E extends Enum<E>> EnumSet<E> noneOf​(Class<E> elementType)
      指定された要素型を使用して空のenumセットを作成します。
      型パラメータ:
      E - セット内の要素のクラス
      パラメータ:
      elementType - このenumセット用の要素型のクラス・オブジェクト
      戻り値:
      指定された型の空のenumセット。
      例外:
      NullPointerException - elementTypeがnullの場合
    • allOf

      public static <E extends Enum<E>> EnumSet<E> allOf​(Class<E> elementType)
      指定された要素型のすべての要素を含むenumセットを作成します。
      型パラメータ:
      E - セット内の要素のクラス
      パラメータ:
      elementType - このenumセット用の要素型のクラス・オブジェクト
      戻り値:
      指定された型のすべての要素を含むenumセット。
      例外:
      NullPointerException - elementTypeがnullの場合
    • copyOf

      public static <E extends Enum<E>> EnumSet<E> copyOf​(EnumSet<E> s)
      指定されたenumセットと同じ要素型を使用して、enumセットを作成します。最初は、同じ要素を含むenumセットを作成します(同じ要素が存在する場合)。
      型パラメータ:
      E - セット内の要素のクラス
      パラメータ:
      s - このenumセットの初期化元のenumセット
      戻り値:
      指定されたenumセットのコピー。
      例外:
      NullPointerException - sがnullである場合
    • copyOf

      public static <E extends Enum<E>> EnumSet<E> copyOf​(Collection<E> c)
      指定されたコレクションから初期化されたenumセットを作成します。 指定されたコレクションがEnumSetインスタンスの場合、この静的ファクトリ・メソッドはcopyOf(EnumSet)と同じ動作をします。 それ以外の場合は、指定されたコレクションが1つ以上の要素を含んでいる必要があります(新規enumセットの要素型を判定するため)。
      型パラメータ:
      E - コレクション内の要素のクラス
      パラメータ:
      c - このenumセットの初期化元のコレクション
      戻り値:
      指定されたコレクションから初期化されたenumセット。
      例外:
      IllegalArgumentException - cEnumSetインスタンスではなく、要素を含まない場合
      NullPointerException - cがnullである場合
    • complementOf

      public static <E extends Enum<E>> EnumSet<E> complementOf​(EnumSet<E> s)
      指定されたenumセットと同じ要素型を使用してenumセットを作成します。最初は、指定されたセットに含まれないこの型の要素がすべて含められます。
      型パラメータ:
      E - enumセット内の要素のクラス
      パラメータ:
      s - このenumセットの初期化に使用する補数を保持するenumセット
      戻り値:
      このセット内の指定されたセットの補数
      例外:
      NullPointerException - sがnullである場合
    • of

      public static <E extends Enum<E>> EnumSet<E> of​(E e)
      指定された要素を最初に含むenumセットを作成します。 このメソッドのオーバーロードは、1 - 5つの要素でenumセットを初期化するために存在します。 6番目には可変引数機能を使用するオーバーロードが行われます。 このオーバーロードでは、最初に任意の数の要素が含まれたenumセットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - 指定された要素およびセットの要素のクラス
      パラメータ:
      e - このセットが最初に含む要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - eがnullである場合
    • of

      public static <E extends Enum<E>> EnumSet<E> of​(E e1, E e2)
      指定された要素が最初に含まれるenumセットを作成します。 このメソッドのオーバーロードは、1 - 5つの要素でenumセットを初期化するために存在します。 6番目には可変引数機能を使用するオーバーロードが行われます。 このオーバーロードでは、最初に任意の数の要素が含まれたenumセットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      e1 - このセットが最初に含む要素
      e2 - このセットが最初に含む別の要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - パラメータがnullの場合
    • of

      public static <E extends Enum<E>> EnumSet<E> of​(E e1, E e2, E e3)
      指定された要素が最初に含まれるenumセットを作成します。 このメソッドのオーバーロードは、1 - 5つの要素でenumセットを初期化するために存在します。 6番目には可変引数機能を使用するオーバーロードが行われます。 このオーバーロードでは、最初に任意の数の要素が含まれたenumセットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      e1 - このセットが最初に含む要素
      e2 - このセットが最初に含む別の要素
      e3 - このセットが最初に含む別の要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - パラメータがnullの場合
    • of

      public static <E extends Enum<E>> EnumSet<E> of​(E e1, E e2, E e3, E e4)
      指定された要素が最初に含まれるenumセットを作成します。 このメソッドのオーバーロードは、1 - 5つの要素でenumセットを初期化するために存在します。 6番目には可変引数機能を使用するオーバーロードが行われます。 このオーバーロードでは、最初に任意の数の要素が含まれたenumセットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      e1 - このセットが最初に含む要素
      e2 - このセットが最初に含む別の要素
      e3 - このセットが最初に含む別の要素
      e4 - このセットが最初に含む別の要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - パラメータがnullの場合
    • of

      public static <E extends Enum<E>> EnumSet<E> of​(E e1, E e2, E e3, E e4, E e5)
      指定された要素が最初に含まれるenumセットを作成します。 このメソッドのオーバーロードは、1 - 5つの要素でenumセットを初期化するために存在します。 6番目には可変引数機能を使用するオーバーロードが行われます。 このオーバーロードでは、最初に任意の数の要素が含まれたenumセットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      e1 - このセットが最初に含む要素
      e2 - このセットが最初に含む別の要素
      e3 - このセットが最初に含む別の要素
      e4 - このセットが最初に含む別の要素
      e5 - このセットが最初に含む別の要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - パラメータがnullの場合
    • of

      @SafeVarargspublic static <E extends Enum<E>> EnumSet<E> of​(E first, E... rest)
      指定された要素が最初に含まれるenumセットを作成します。 そのパラメータ・リストが可変引数機能を使用するこのファクトリは、最初に任意の数の要素を含むenumセットを作成するために使用される場合がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      first - このセットが最初に含む要素
      rest - セットが最初に含む残りの要素
      戻り値:
      指定された要素を最初に含むenumセット
      例外:
      NullPointerException - 指定された要素のいずれかがnullまたはrestがnullの場合
    • range

      public static <E extends Enum<E>> EnumSet<E> range​(E from, E to)
      指定された2つの端点により定義される範囲内の要素すべてを最初に含むenumセットを作成します。 返されるセットには、端点自身が含まれます。これは、同一であってもかまいませんが、順序が乱れてはいけません。
      型パラメータ:
      E - パラメータ要素およびセットの要素のクラス
      パラメータ:
      from - 範囲内の最初の要素
      to - 範囲内の最後の要素
      戻り値:
      指定された2つの端点で定義された範囲内のすべての要素を最初に含むenumセット
      例外:
      NullPointerException - fromまたはtoがnullの場合
      IllegalArgumentException - from.compareTo(to)> 0の場合
    • clone

      public EnumSet<E> clone()
      このセットのコピーを返します。
      オーバーライド:
      clone、クラス: Object
      戻り値:
      このセットのコピー
      関連項目:
      Cloneable