- 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
实现。 枚举集中的所有元素必须来自单个枚举类型,该类型在创建集时显式或隐式指定。 枚举集在内部表示为位向量。 这种表现非常紧凑和高效。 这个类的空间和时间性能应该足够好,以允许它作为传统的基于int
的“位标志”的高质量,类型安全的替代品。 即使批量操作(例如containsAll
和retainAll
)如果它们的参数也是枚举集也应该非常快。iterator
方法返回的迭代器以其自然顺序 (枚举枚举常量的顺序)遍历元素。 返回的迭代器是弱一致的 :它永远不会抛出ConcurrentModificationException
,它可能会也可能不会显示迭代进行过程中对集合所做的任何修改的影响。不允许使用空元素。 尝试插入null元素将抛出
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
, Serialized Form
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 static <E extends Enum<E>>
EnumSet<E>allOf(类<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(类<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.AbstractSet
equals, hashCode, removeAll
-
声明方法的类 java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
-
声明方法的接口 java.util.Collection
parallelStream, removeIf, stream, toArray
-
-
-
-
方法详细信息
-
noneOf
public static <E extends Enum<E>> EnumSet<E> noneOf(类<E> elementType)
创建具有指定元素类型的空枚举集。- 参数类型
-
E
- 集合中元素的类 - 参数
-
elementType
- 此枚举集的元素类型的类对象 - 结果
- 指定类型的空枚举集。
- 异常
-
NullPointerException
- 如果elementType
为空
-
allOf
public static <E extends Enum<E>> EnumSet<E> allOf(类<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
实例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
- 如果任何参数为null
-
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
创建最初包含指定元素的枚举集。 存在此方法的过载以初始化具有一到五个元素的枚举集。 提供了使用varargs功能的第六次重载。 这种重载可用于创建最初包含任意数量元素的枚举集,但可能比不使用varargs的重载运行得慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
e1
- 此集合最初要包含的元素 -
e2
- 此集合最初要包含的另一个元素 -
e3
- 此集合最初要包含的另一个元素 - 结果
- 最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何参数为null
-
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
- 如果任何参数为null
-
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
- 如果任何参数为null
-
of
@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
创建最初包含指定元素的枚举集。 此工厂的参数列表使用varargs功能,可用于创建最初包含任意数量元素的枚举集,但它可能比不使用varargs的重载运行得慢。- 参数类型
-
E
- 参数元素和集合的类 - 参数
-
first
- 该集合最初要包含的元素 -
rest
- 该集合最初要包含的其余元素 - 结果
- 最初包含指定元素的枚举集
- 异常
-
NullPointerException
- 如果任何指定的元素为null,或者rest
为null
-
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
-
-