- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.EnumSet<E>
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,Set<E>
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
同行快得多。 如果它们的参数也是一个枚举集,那么即使批量操作也会在一段时间内执行。这个类是Java Collections Framework的成员。
- 从以下版本开始:
- 1.5
- 另请参见:
-
EnumMap
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 static <E extends Enum<E>>
EnumSet<E>allOf(Class<E> elementType)
创建一个包含指定元素类型中所有元素的枚举集。EnumSet<E>
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)
创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。-
Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
-
Methods inherited from class java.util.AbstractSet
equals, hashCode, removeAll
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
-
-
-
方法详细信息
-
noneOf
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
使用指定的元素类型创建一个空的枚举集。- 参数类型
-
E
- 集合中的元素的类 - 参数
-
elementType
- 此枚举集的元素类型的类对象 - 结果
- 指定类型的空的枚举集。
- 异常
-
NullPointerException
- 如果elementType
为空
-
allOf
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
创建一个包含指定元素类型中所有元素的枚举集。- 参数类型
-
E
- 集合中的元素的类 - 参数
-
elementType
- 此枚举集的元素类型的类对象 - 结果
- 一个包含指定类型的所有元素的枚举集。
- 异常
-
NullPointerException
- 如果elementType
为空
-
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
创建与指定的枚举集相同的元素类型的枚举集,最初包含相同的元素(如果有)。- 参数类型
-
E
- 集合中的元素的类 - 参数
-
s
- 从中初始化此枚举集的枚举集 - 结果
- 指定枚举集的副本。
- 异常
-
NullPointerException
- 如果s
为空
-
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
创建从指定集合初始化的枚举集。 如果指定的集合是一个EnumSet
实例,则此静态工厂方法的行为与copyOf(EnumSet)
相同。 否则,指定的集合必须至少包含一个元素(以确定新的枚举集的元素类型)。- 参数类型
-
E
- 集合中元素的类 - 参数
-
c
- 从中初始化此枚举集的集合 - 结果
- 从给定集合初始化的枚举集。
- 异常
-
IllegalArgumentException
- 如果c
不是EnumSet
实例,并且不包含元素 -
NullPointerException
- 如果c
为空
-
complementOf
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
创建与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素,该元素 不包含在指定的集合中。- 参数类型
-
E
- 枚举集中元素的类 - 参数
-
s
- 从其补码初始化此枚举集的枚举集 - 结果
- 该集合中指定集合的补码
- 异常
-
NullPointerException
- 如果s
为空
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e)
创建一个最初包含指定元素的枚举集。 存在这种方法的重载,用于初始化一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可能用于创建一个最初包含任意数量的元素的枚举集,但可能运行速度比不使用varargs的重载更慢。- 参数类型
-
E
- 指定元素和集合的类 - 参数
-
e
- 最初包含该集合的元素 - 结果
- 最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果e
为空
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
创建一个最初包含指定元素的枚举集。 存在这种方法的重载,用于初始化一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可能用于创建一个最初包含任意数量的元素的枚举集,但可能运行速度比不使用varargs的重载更慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
e1
- 该集合最初包含的元素 -
e2
- 此集最初包含的另一个元素 - 结果
- 一个最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何参数为空
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
创建一个最初包含指定元素的枚举集。 存在这种方法的重载,用于初始化一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可能用于创建一个最初包含任意数量的元素的枚举集,但可能运行速度比不使用varargs的重载更慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
e1
- 此集最初包含的元素 -
e2
- 此集最初包含的另一个元素 -
e3
- 此集最初包含的另一个元素 - 结果
- 一个最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何参数为空
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
创建一个最初包含指定元素的枚举集。 存在这种方法的重载,用于初始化一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可能用于创建一个最初包含任意数量的元素的枚举集,但可能运行速度比不使用varargs的重载更慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
e1
- 此集最初包含的元素 -
e2
- 此集最初包含的另一个元素 -
e3
- 此集最初包含的另一个元素 -
e4
- 此集最初包含的另一个元素 - 结果
- 一个最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何参数为空
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
创建一个最初包含指定元素的枚举集。 存在这种方法的重载,用于初始化一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可能用于创建一个最初包含任意数量的元素的枚举集,但可能运行速度比不使用varargs的重载更慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
e1
- 此集最初包含的元素 -
e2
- 此集最初包含的另一个元素 -
e3
- 此集最初包含的另一个元素 -
e4
- 此集最初包含的另一个元素 -
e5
- 此集最初包含的另一个元素 - 结果
- 一个最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何参数为空
-
of
@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
创建一个最初包含指定元素的枚举集。 该工厂的参数列表使用varargs功能,可用于创建一个最初包含任意数量元素的枚举集,但它的运行速度可能比不使用varargs的重载更慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
first
- 该集合最初包含的元素 -
rest
- 集合最初包含的剩余元素 - 结果
- 一个最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何指定的元素为空,或者如果rest
为空
-
range
public static <E extends Enum<E>> EnumSet<E> range(E from, E to)
创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。 返回的集合将包含端点本身,这可能是相同的,但不能是无序的。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
from
- 范围内的第一个元素 -
to
- 范围中的最后一个元素 - 结果
- 最初包含由两个指定端点定义的范围内的所有元素的枚举集
- 异常
-
NullPointerException
- 如果from
或to
为空 -
IllegalArgumentException
- 如果是from.compareTo(to) > 0
-
-