java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.EnumSet<E>
public abstract class EnumSet<E extends Enum<E>>
与枚举类型一起使用的专用 Set
实现。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。枚举 set 在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于 int 的“位标志”的替换形式,具有高品质、类型安全的优势。如果其参数也是一个枚举 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(MyEnum.class));
实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashSet
副本更快。如果其参数也是一个枚举 set ,则批量操作会在固定时间内执行。
此类是 Java Collections Framework 的成员。
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 |
方法详细信息 |
---|
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
elementType
- 此枚举 set 的元素类型的 class 对象
NullPointerException
- 如果
elementType 为 null
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
elementType
- 此枚举 set 的元素类型的 class 对象
NullPointerException
- 如果
elementType 为 null
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
s
- 用于初始化此枚举 set 的枚举 set
NullPointerException
- 如果
s 为 null
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
copyOf(EnumSet)
相同。否则,指定的 collection 必须至少包含一个元素(以确定新枚举 set 的元素类型)。
c
- 用于初始化此枚举 set 的 collection
IllegalArgumentException
- 如果
c 不是一个
EnumSet 实例,并且不包含元素
NullPointerException
- 如果
c 为 null
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
s
- 用其补码初始化此枚举 set 的枚举 set
NullPointerException
- 如果
s 为 null
public static <E extends Enum<E>> EnumSet<E> of(E e)
e
- 此 set 最初包含的元素
NullPointerException
- 如果
e 为 null
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
e1
- 此 set 最初要包含的元素
e2
- 此 set 最初要包含的另一个元素
NullPointerException
- 如果任意参数为 null
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
e1
- 此 set 最初要包含的元素
e2
- 此 set 最初要包含的另一个元素
e3
- 此 set 最初要包含的另一个元素
NullPointerException
- 如果任意参数为 null
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
e1
- 此 set 最初要包含的元素
e2
- 此 set 最初要包含的另一个元素
e3
- 此 set 最初要包含的另一个元素
e4
- 此 set 最初要包含的另一个元素
NullPointerException
- 如果任意参数为 null
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
e1
- 此 set 最初要包含的元素
e2
- 此 set 最初要包含的另一个元素
e3
- 此 set 最初要包含的另一个元素
e4
- 此 set 最初要包含的另一个元素
e5
- 此 set 最初要包含的另一个元素
NullPointerException
- 如果任意参数为 null
public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
first
- 此 set 最初要包含的元素
rest
- 此 set 最初要包含的其余元素
NullPointerException
- 如果任意参数为 null,或
rest 为 null
public static <E extends Enum<E>> EnumSet<E> range(E from, E to)
from
- 该范围中的第一个元素
to
- 妨碍范围中的最后一个元素
NullPointerException
- 如果
first 或
last 为 null
IllegalArgumentException
- 如果
first.compareTo(last) > 0
public EnumSet<E> clone()