EnumSet
java.lang.Object
|—java.util.AbstractCollection<E&
|—|—java.util.AbstractSet<E&
|—|—|—java.util.EnumSet<E&
public abstract class EnumSet<E extends Enum<E>>
extends AbstractSet<E>
implements Cloneable, Serializable
用于枚举类型的专用 Set 实现。枚举集合中的所有元素都必须来自一个枚举类型,该枚举类型在创建集合时显式或隐式指定。枚举集在内部表示为位向量。这种表示非常紧凑和高效。这个类的空间和时间性能应该足够好,以允许它用作传统的基于 int 的“位标志”的高质量、类型安全的替代品。如果参数也是枚举集,即使批量操作(例如 containsAll 和 retainAll)也应该运行得非常快。
iterator 方法返回的迭代器以元素的自然顺序(声明枚举常量的顺序)遍历元素。返回的迭代器是弱一致的:它永远不会抛出 ConcurrentModificationException 并且它可能会或可能不会显示迭代正在进行时对集合进行的任何修改的影响。
不允许空元素。尝试插入空元素将引发 NullPointerException。但是,尝试测试是否存在空元素或删除空元素将正常运行。
像大多数集合实现一样,EnumSet 是不同步的。如果多个线程同时访问一个枚举集,并且至少有一个线程修改了该集,则它应该在外部同步。这通常是通过同步一些自然封装枚举集的对象来完成的。如果不存在这样的对象,则应使用 Collections#synchronizedSet 方法“包装”该集合。这最好在创建时完成,以防止意外的不同步访问:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
实施说明:所有基本操作都在恒定时间内执行。 它们很可能(尽管不能保证)比它们的 HashSet 对应物快得多。 如果参数也是枚举集,即使批量操作也会在恒定时间内执行。
此类是 Java 集合框架的成员。
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
static <E extends Enum<E>>EnumSet<E> | allOf(Class<E> elementType) | 创建一个枚举集,其中包含指定元素类型中的所有元素。 |
EnumSetE | clone() | 返回此集合的副本。 |
static <E extends Enum<E>>EnumSet<E> | complementOf(EnumSet<E> s) | 创建一个与指定枚举集具有相同元素类型的枚举集,最初包含该类型的所有未包含在指定集中的元素。 |
static <E extends Enum<E>>EnumSet<E> | copyOf(Collection<E> c) | 创建从指定集合初始化的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | copyOf(EnumSet<E> s) | 创建一个与指定枚举集具有相同元素类型的枚举集,最初包含相同的元素(如果有)。 |
static <E extends Enum<E>>EnumSet<E> | noneOf(Class<E> elementType) | 创建具有指定元素类型的空枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E e) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E e1, E e2) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E first, E… rest) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E e1, E e2, E e3) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E e1, E e2, E e3, E e4) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | of(E e1, E e2, E e3, E e4, E e5) | 创建一个最初包含指定元素的枚举集。 |
static <E extends Enum<E>>EnumSet<E> | range(E from, E to) | 创建一个枚举集,最初包含由两个指定端点定义的范围内的所有元素。 |
从类 java.util.AbstractCollection 继承的方法 |
---|
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString |
从类 java.util.AbstractSet 继承的方法 |
---|
equals, hashCode, removeAll |
从接口 java.util.Collection 继承的方法 |
---|
parallelStream, removeIf, stream |
从接口 java.lang.Iterable 继承的方法 |
---|
forEach |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.util.Set 继承的方法 |
---|
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray |
方法详情
noneOf
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
创建具有指定元素类型的空枚举集。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 集合中元素的类别 |
参数:
参数名称 | 参数描述 |
---|---|
elementType | 此枚举集的元素类型的类对象 |
返回:
指定类型的空枚举集。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果元素类型为空 |
allOf
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
创建一个枚举集,其中包含指定元素类型中的所有元素。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 集合中元素的类别 |
参数:
参数名称 | 参数描述 |
---|---|
elementType | 此枚举集的元素类型的类对象 |
返回:
包含指定类型中所有元素的枚举集。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 elementType 为空 |
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
创建一个与指定枚举集具有相同元素类型的枚举集,最初包含相同的元素(如果有)。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 集合中元素的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 从中初始化此枚举集的枚举集 |
返回:
指定枚举集的副本。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 s 为空 |
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
创建从指定集合初始化的枚举集。 如果指定的集合是 EnumSet 实例,则此静态工厂方法的行为与 copyOf(java.util.EnumSet) 相同。 否则,指定的集合必须至少包含一个元素(以确定新枚举集的元素类型)。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 集合中元素的类 |
参数:
参数名称 | 参数描述 |
---|---|
c | 从中初始化此枚举集的集合 |
返回:
从给定集合初始化的枚举集。
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果 c 不是 EnumSet 实例并且不包含任何元素 |
NullPointerException | 如果 c 为空 |
complementOf
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
创建一个与指定枚举集具有相同元素类型的枚举集,最初包含该类型的所有未包含在指定集中的元素。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 枚举集中元素的类 |
参数:
参数名称 | 参数描述 |
---|---|
s | 初始化此枚举集的补码的枚举集 |
返回:
此集合中指定集合的补集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 s 为空 |
of
public static <E extends Enum<E>> EnumSet<E> of(E e)
创建一个最初包含指定元素的枚举集。 存在此方法的重载以初始化具有一到五个元素的枚举集。 提供了使用可变参数功能的第六个重载。 此重载可用于创建最初包含任意数量元素的枚举集,但可能比不使用可变参数的重载运行得更慢。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 指定元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
e | 该集合最初要包含的元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 e 为空 |
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
创建一个最初包含指定元素的枚举集。 存在此方法的重载以初始化具有一到五个元素的枚举集。 提供了使用可变参数功能的第六个重载。 此重载可用于创建最初包含任意数量元素的枚举集,但可能比不使用可变参数的重载运行得更慢。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 参数元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
e1 | 该集合最初要包含的元素 |
e2 | 该集合最初要包含的另一个元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果任何参数为空 |
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
创建一个最初包含指定元素的枚举集。 存在此方法的重载以初始化具有一到五个元素的枚举集。 提供了使用可变参数功能的第六个重载。 此重载可用于创建最初包含任意数量元素的枚举集,但可能比不使用可变参数的重载运行得更慢。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 参数元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
e1 | 该集合最初要包含的元素 |
e2 | 该集合最初要包含的另一个元素 |
e3 | 该集合最初要包含的另一个元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果任何参数为空 |
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
创建一个最初包含指定元素的枚举集。 存在此方法的重载以初始化具有一到五个元素的枚举集。 提供了使用可变参数功能的第六个重载。 此重载可用于创建最初包含任意数量元素的枚举集,但可能比不使用可变参数的重载运行得更慢。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 参数元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
e1 | 该集合最初要包含的元素 |
e2 | 该集合最初要包含的另一个元素 |
e3 | 该集合最初要包含的另一个元素 |
e4 | 该集合最初要包含的另一个元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果任何参数为空 |
of
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 | 该集合最初要包含的另一个元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果任何参数为空 |
of
@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E… rest)
创建一个最初包含指定元素的枚举集。 这个工厂,其参数列表使用可变参数特性,可用于创建最初包含任意数量元素的枚举集,但它可能比不使用可变参数的重载运行得更慢。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 参数元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
first | 集合最初要包含的元素 |
rest | 集合最初包含的剩余元素 |
返回:
最初包含指定元素的枚举集
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果任何指定的元素为 null,或者 rest 为 null |
range
public static <E extends Enum<E>> EnumSet<E> range(E from, E to)
创建一个枚举集,最初包含由两个指定端点定义的范围内的所有元素。 返回的集合将包含端点本身,它们可能相同但不能乱序。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
E | 参数元素和集合的类 |
参数:
参数名称 | 参数描述 |
---|---|
from | 范围内的第一个元素 |
to | 范围内的最后一个元素 |
返回:
一个枚举集,最初包含由两个指定端点定义的范围内的所有元素
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 from 或 to 为空 |
IllegalArgumentException | 如果 from.compareTo(to) > 0 |
clone
public EnumSetE clone()
返回此集合的副本。
覆盖:
在类 Object 中克隆
返回:
这套副本