JavaTM 2 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

與列舉型別一起使用的專用 Set 實作。列舉 set 中所有鍵都必須來自單個列舉型別,該列舉型別在創建 set 時顯式或隱式地指定。列舉 set 在內部表示為位元向量。此表示形式非常緊湊且高效。此類別的空間和時間性能應該很好,足以用作傳統上基於 int 的“位標誌”的替換形式,具有高品質、型別安全的優勢。如果其參數也是一個列舉 set,則批量操作(如 containsAllretainAll)也應運行得非常快。

iterator 方法返回的迭代器按其自然順序 遍歷這些元素(該順序是宣告列舉常數的順序)。返回的迭代器是弱一致的:它從不拋出 ConcurrentModificationException,也不一定顯示在迭代進行時發生的任何 set 修改的效果。

不允許使用 null 元素。試圖插入 null 元素將拋出 NullPointerException。但是,試圖測試是否出現 null 元素或移除 null 元素將不會拋出異常。

像大多數 collection 實作一樣,EnumSet 是不同步的。如果多個執行緒同時存取一個列舉 set,並且至少有一個執行緒修改該 set,則此列舉 set 在外部應該是同步的。這通常是通過對自然封裝該列舉 set 的物件執行同步操作來完成的。如果不存在這樣的物件,則應該使用 Collections.synchronizedSet(java.util.Set) 方法來“包裹”該 set。最好在創建時完成這一操作,以防止意外的非同步存取:

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

實作注意事項:所有基本操作都在固定時間內執行。雖然並不保證,但它們很可能比其 HashSet 副本更快。如果其參數也是一個列舉 set ,則批量操作會在固定時間內執行。

此類別是 Java Collections Framework 的成員。

從以下版本開始:
1.5
另請參見:
EnumMap

方法摘要
static
<E extends Enum<E>>
EnumSet<E>
allOf(Class<E> elementType)
          創建一個套件含指定元素型別的所有元素的列舉 set。
 EnumSet<E> clone()
          返回 set 的副本。
static
<E extends Enum<E>>
EnumSet<E>
complementOf(EnumSet<E> s)
          創建一個其元素型別與指定列舉 set 相同的列舉 set,最初包含指定 set 中所 套件含的此型別的所有元素。
static
<E extends Enum<E>>
EnumSet<E>
copyOf(Collection<E> c)
          創建一個從指定 collection 初始化的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
copyOf(EnumSet<E> s)
          創建一個其元素型別與指定列舉 set 相同的列舉 set,最初包含相同的元素(如果有的話)。
static
<E extends Enum<E>>
EnumSet<E>
noneOf(Class<E> elementType)
          創建一個具有指定元素型別的空列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E first, E... rest)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4, E e5)
          創建一個最初包含指定元素的列舉 set。
static
<E extends Enum<E>>
EnumSet<E>
range(E from, E to)
          創建一個最初包含由兩個指定端點所定義範圍內的所有元素的列舉 set。
 
從類別 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)
創建一個具有指定元素型別的空列舉 set。

參數:
elementType - 此列舉 set 的元素型別的 class 物件
拋出:
NullPointerException - 如果 elementType 為 null

allOf

public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
創建一個套件含指定元素型別的所有元素的列舉 set。

參數:
elementType - 此列舉 set 的元素型別的 class 物件
拋出:
NullPointerException - 如果 elementType 為 null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
創建一個其元素型別與指定列舉 set 相同的列舉 set,最初包含相同的元素(如果有的話)。

參數:
s - 用於初始化此列舉 set 的列舉 set
拋出:
NullPointerException - 如果 s 為 null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
創建一個從指定 collection 初始化的列舉 set。如果指定的 collection 是一個 EnumSet 實例,則此靜態處理器方法的功能與 copyOf(EnumSet) 相同。否則,指定的 collection 必須至少包含一個元素(以確定新列舉 set 的元素型別)。

參數:
c - 用於初始化此列舉 set 的 collection
拋出:
IllegalArgumentException - 如果 c 不是一個 EnumSet 實例,並且不包含元素
NullPointerException - 如果 c 為 null

complementOf

public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
創建一個其元素型別與指定列舉 set 相同的列舉 set,最初包含指定 set 中所 套件含的此型別的所有元素。

參數:
s - 用其補碼初始化此列舉 set 的列舉 set
拋出:
NullPointerException - 如果 s 為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e)
創建一個最初包含指定元素的列舉 set。 用 1 到 5 個元素重載此方法,從而初始化一個列舉 set。第 6 次重載使用變數參數功能。此重載可能創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
e - 此 set 最初包含的元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果 e 為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2)
創建一個最初包含指定元素的列舉 set。 用 1 到 5 個元素重載此方法,從而初始化一個列舉 set。第 6 次重載使用變數參數功能。此重載可能創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一個元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果任意參數為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3)
創建一個最初包含指定元素的列舉 set。 用 1 到 5 個元素重載此方法,從而初始化一個列舉 set。第 6 次重載使用變數參數功能。此重載可能創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一個元素
e3 - 此 set 最初要包含的另一個元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果任意參數為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3,
                                                E e4)
創建一個最初包含指定元素的列舉 set。 用 1 到 5 個元素重載此方法,從而初始化一個列舉 set。第 6 次重載使用變數參數功能。此重載可能創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一個元素
e3 - 此 set 最初要包含的另一個元素
e4 - 此 set 最初要包含的另一個元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果任意參數為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3,
                                                E e4,
                                                E e5)
創建一個最初包含指定元素的列舉 set。 用 1 到 5 個元素重載此方法,從而初始化一個列舉 set。第 6 次重載使用變數參數功能。此重載可能創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一個元素
e3 - 此 set 最初要包含的另一個元素
e4 - 此 set 最初要包含的另一個元素
e5 - 此 set 最初要包含的另一個元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果任意參數為 null

of

public static <E extends Enum<E>> EnumSet<E> of(E first,
                                                E... rest)
創建一個最初包含指定元素的列舉 set。此處理器方法的參數列表使用變數參數功能,該方法可以創建一個最初包含任意個元素的列舉 set,但是這樣很可能比不使用變數參數的重載運行得慢。

參數:
first - 此 set 最初要包含的元素
rest - 此 set 最初要包含的其餘元素
返回:
最初包含指定元素的列舉 set
拋出:
NullPointerException - 如果任意參數為 null,或 rest 為 null

range

public static <E extends Enum<E>> EnumSet<E> range(E from,
                                                   E to)
創建一個最初包含由兩個指定端點所定義範圍內的所有元素的列舉 set。返回的 set 將包含端點本身,這兩個端點可能相同,但順序不能顛倒。

參數:
from - 該範圍中的第一個元素
to - 妨礙範圍中的最後一個元素
返回:
最初包含由兩個指定端點所定義範圍內的所有元素的列舉 set
拋出:
NullPointerException - 如果 firstlast 為 null
IllegalArgumentException - 如果 first.compareTo(last) > 0

clone

public EnumSet<E> clone()
返回 set 的副本。

覆寫:
類別 Object 中的 clone
返回:
set 的副本
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only