JavaTM Platform
Standard Ed. 6

java.util
クラス EnumSet<E extends Enum<E>>

java.lang.Object
  上位を拡張 java.util.AbstractCollection<E>
      上位を拡張 java.util.AbstractSet<E>
          上位を拡張 java.util.EnumSet<E>
すべての実装されたインタフェース:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

public abstract class EnumSet<E extends Enum<E>>
extends AbstractSet<E>
implements Cloneable, Serializable

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

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

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

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

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 セットを作成します。
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 first, E... rest)
          指定された要素が最初に含まれる enum セットを作成します。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2)
          指定された要素が最初に含まれる 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, size, toArray, toArray, toString
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.Set から継承されたメソッド
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray
 

メソッドの詳細

noneOf

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
指定された要素型を使用して空の enum セットを作成します。

パラメータ:
elementType - この enum セット用の要素型のクラスオブジェクト
例外:
NullPointerException - elementType が null の場合

allOf

public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
指定された要素型のすべての要素を含む enum セットを作成します。

パラメータ:
elementType - この enum セット用の要素型のクラスオブジェクト
例外:
NullPointerException - elementType が null の場合

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
指定された enum セットと同じ要素型を使用して、enum セットを作成します。最初は、同じ要素を含む enum セットを作成します (同じ要素が存在する場合)。

パラメータ:
s - この enum セットの初期化元の enum セット
例外:
NullPointerException - s が null の場合

copyOf

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

パラメータ:
c - この enum セットの初期化元のコレクション
例外:
IllegalArgumentException - cEnumSet インスタンスではなく、要素を含まない場合
NullPointerException - c が null の場合

complementOf

public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
指定された enum セットと同じ要素型を使用して 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 - このセットが最初に含む要素
戻り値:
指定された要素を最初に含む enum セット
例外:
NullPointerException - e が null の場合

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2)
指定された要素が最初に含まれる enum セットを作成します。 このメソッドのオーバーロードは、1 〜 5 つの要素で enum セットを初期化するために存在します。6 番目には可変引数機能を使用するオーバーロードが行われます。このオーバーロードでは、最初に任意の数の要素が含まれた enum セットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。

パラメータ:
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 セットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。

パラメータ:
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 セットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。

パラメータ:
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 セットを作成するために実行される可能性がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。

パラメータ:
e1 - このセットが最初に含む要素
e2 - このセットが最初に含む別の要素
e3 - このセットが最初に含む別の要素
e4 - このセットが最初に含む別の要素
e5 - このセットが最初に含む別の要素
戻り値:
指定された要素を最初に含む enum セット
例外:
NullPointerException - パラメータが null の場合

of

public static <E extends Enum<E>> EnumSet<E> of(E first,
                                                E... rest)
指定された要素が最初に含まれる enum セットを作成します。そのパラメータリストが可変引数機能を使用するこのファクトリは、最初に任意の数の要素を含む enum セットを作成するために使用される場合がありますが、可変引数を使用しないオーバーロードより低速に実行される傾向があります。

パラメータ:
first - このセットが最初に含む要素
rest - セットが最初に含む残りの要素
戻り値:
指定された要素を最初に含む enum セット
例外:
NullPointerException - 指定された要素のいずれかが null または rest が null の場合

range

public static <E extends Enum<E>> EnumSet<E> range(E from,
                                                   E to)
指定された 2 つの端点により定義される範囲内の要素すべてを最初に含む enum セットを作成します。返されるセットには、端点自身が含まれます。これは、同一であってもかまいませんが、順序が乱れてはいけません。

パラメータ:
from - 範囲内の最初の要素
to - 範囲内の最後の要素
戻り値:
指定された 2 つの端点で定義された範囲内のすべての要素を最初に含む enum セット
例外:
NullPointerException - first または last が null の場合
IllegalArgumentException - first.compareTo(last) > 0 の場合

clone

public EnumSet<E> clone()
このセットの複製を返します。

オーバーライド:
クラス Object 内の clone
戻り値:
このセットのコピー
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。