|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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 的“位标志”的替换形式,具有高品质、类型安全的优势。如果指定的 collection 也是一个枚举 set,则批量操作(如 containsAll 和 retainAll)也应运行得非常快。
由 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(Foo.class));
实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashSet
副本更快。如果参数是另一个 EnumSet 实例,则诸如 addAll()
和 AbstractSet.removeAll(java.util.Collection)
之类的批量操作也会在固定时间内执行。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.5
- 另请参见:
-
EnumMap
方法摘要 | ||
---|---|---|
static
|
allOf(Class<E> elementType) 创建一个包含指定元素类型的所有元素的枚举 set。 |
|
EnumSet<E> |
clone() 返回 set 的副本。 |
|
static
|
complementOf(EnumSet<E> s) 创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所不 包含的此类型的所有元素。 |
|
static
|
copyOf(Collection<E> c) 创建一个从指定 collection 初始化的枚举 set。 |
|
static
|
copyOf(EnumSet<E> s) 创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含相同的元素(如果有的话)。 |
|
static
|
noneOf(Class<E> elementType) 创建一个具有指定元素类型的空枚举 set。 |
|
static
|
of(E e) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
of(E first, E... rest) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
of(E e1, E e2) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
of(E e1, E e2, E e3) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
of(E e1, E e2, E e3, E e4) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
of(E e1, E e2, E e3, E e4, E e5) 创建一个最初包含指定元素的枚举 set。 |
|
static
|
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