public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
Set
实现与枚举类型一起使用。
枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型。
枚举集在内部表示为位向量。
这种表示非常紧凑和高效。
这个课程的空间和时间表现应该足够好,可以将其作为基于传统int的“位标志”的高品质,类型安全的替代品使用 。
即使批量操作(如containsAll和retainAll )也应该很快运行,如果他们的参数也是枚举集。
由iterator返回的迭代器以自然顺序 (枚举枚举常量的声明顺序)遍历元素。 返回的迭代器是弱一致的 :它永远不会抛出ConcurrentModificationException
,它可能显示或可能不显示在迭代进行中发生的集合的任何修改的影响。
不允许使用零元素。 尝试插入一个空元素将抛出NullPointerException
。 然而,尝试测试null元素的存在或删除一个将会正常工作。
像大多数集合实现一样, EnumSet不同步。 如果多个线程同时访问枚举集,并且至少有一个线程修改该集合,则它应该在外部同步。 这通常通过在自然地封装枚举集的一些对象上进行同步来实现。 如果没有这样的对象存在,那么该组件应该使用Collections.synchronizedSet(java.util.Set<T>)
方法“包装”。 这最好在创建时完成,以防止意外的不同步访问:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
实现注意事项:所有基本操作都在不间断的时间内执行。 他们很可能(虽然不能保证)比他们的HashSet
同行快得多。 如果它们的参数也是一个枚举集,那么即使批量操作也会在一段时间内执行。
EnumMap
Modifier and Type | Method and Description |
---|---|
static <E extends Enum<E>> |
allOf(类<E> elementType)
创建一个包含指定元素类型中所有元素的枚举集。
|
EnumSet<E> |
clone()
返回此集合的副本。
|
static <E extends Enum<E>> |
complementOf(EnumSet<E> s)
创建与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素,该元素
不包含在指定的集合中。
|
static <E extends Enum<E>> |
copyOf(Collection<E> c)
创建从指定集合初始化的枚举集。
|
static <E extends Enum<E>> |
copyOf(EnumSet<E> s)
创建与指定的枚举集相同的元素类型的枚举集,最初包含相同的元素(如果有)。
|
static <E extends Enum<E>> |
noneOf(类<E> elementType)
使用指定的元素类型创建一个空的枚举集。
|
static <E extends Enum<E>> |
of(E e)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
of(E first, E... rest)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
of(E e1, E e2)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
of(E e1, E e2, E e3)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
of(E e1, E e2, E e3, E e4)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
of(E e1, E e2, E e3, E e4, E e5)
创建一个最初包含指定元素的枚举集。
|
static <E extends Enum<E>> |
range(E from, E to)
创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。
|
equals, hashCode, removeAll
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
finalize, getClass, notify, notifyAll, wait, wait, wait
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
parallelStream, removeIf, stream
public static <E extends Enum<E>> EnumSet<E> noneOf(类<E> elementType)
E
- 集合中的元素的类
elementType
- 此枚举集的元素类型的类对象
NullPointerException
- 如果
elementType为空
public static <E extends Enum<E>> EnumSet<E> allOf(类<E> elementType)
E
- 集合中的元素的类
elementType
- 此枚举集的元素类型的类对象
NullPointerException
- 如果
elementType为空
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
E
- 集合中的元素的类
s
- 从中初始化此枚举集的枚举集
NullPointerException
- 如果
s为空
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
copyOf(EnumSet)
相同 。
否则,指定的集合必须至少包含一个元素(以确定新的枚举集的元素类型)。
E
- 集合中元素的类
c
- 从中初始化此枚举集合的集合
IllegalArgumentException
- 如果
c不是
EnumSet实例,并且不包含元素
NullPointerException
- 如果
c为空
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
E
- 枚举集中元素的类
s
- 枚举集合从其补码初始化此枚举集
NullPointerException
- 如果
s为空
public static <E extends Enum<E>> EnumSet<E> of(E e)
E
- 指定元素和集合的类
e
- 最初包含该集合的元素
NullPointerException
- 如果
e为空
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
E
- 参数元素和集合的类
e1
- 该集合最初包含的元素
e2
- 此集最初包含的另一个元素
NullPointerException
- 如果任何参数为空
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
E
- 参数元素和集合的类
e1
- 该集合最初包含的元素
e2
- 此集最初包含的另一个元素
e3
- 此集最初包含的另一个元素
NullPointerException
- 如果任何参数为空
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
E
- 参数元素和集合的类
e1
- 最初包含该集合的元素
e2
- 这个集合最初包含的另一个元素
e3
- 此集最初包含的另一个元素
e4
- 此集最初包含的另一个元素
NullPointerException
- 如果任何参数为空
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
E
- 参数元素和集合的类
e1
- 该集合最初包含的元素
e2
- 此集最初包含的另一个元素
e3
- 此集最初包含的另一个元素
e4
- 此集最初包含的另一个元素
e5
- 这个集合最初包含的另一个元素
NullPointerException
- 如果任何参数为空
@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
E
- 参数元素和集合的类
first
- 该集合最初包含的元素
rest
- 集合最初包含的其余元素
NullPointerException
- 如果任何指定的元素为空,或者
rest为空
public static <E extends Enum<E>> EnumSet<E> range(E from, E to)
E
- 参数元素和集合的类
from
- 范围内的第一个元素
to
- 范围中的最后一个元素
NullPointerException
- 如果
from
或
to
为空
IllegalArgumentException
- 如果
from.compareTo(to) > 0