EnumSet
public abstract class EnumSet
extends AbstractSet<E extends Enum<E>>
implements Cloneable, Serializable
用于枚举类型的专用Set
实现。 枚举集合中的所有元素必须来自单个枚举类型,该集合类型在创建集合时显式或隐式指定。 枚举集在内部表示为位向量。 这种表示非常紧凑和高效。 这个类的空间和时间表现应该足够好,以允许其用作传统的基于int的“比特标志”的高质量,类型安全的替代品。 即使批量操作(如containsAll和retainAll )应该运行得非常快,如果它们的参数也是一个枚举集合。
由iterator方法返回的迭代器按照它们的自然顺序 (枚举常量声明的顺序)遍历元素。 返回的迭代器是弱一致的 :它永远不会抛出ConcurrentModificationException
,它可能会或可能不会显示在迭代过程中发生的任何修改对集合的影响。
空元素是不允许的。 尝试插入空元素将抛出NullPointerException
。 尝试测试是否存在null元素或删除元素将会正常工作。
像大多数收集实现一样, EnumSet不同步。 如果多个线程同时访问一个枚举集,并且至少有一个线程修改了该集,它应该在外部同步。 这通常是通过同步一些自然封装枚举集的对象来实现的。 如果不存在这样的对象,则该组应该使用synchronizedSet(Set
)
方法“包装”。 这最好在创建时完成,以防止意外的非同步访问:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
实现注意事项:所有基本操作均在恒定时间内执行 他们很可能(虽然不能保证)比他们的HashSet
同行快得多。 如果批量操作的参数也是一个枚举集合,那么即使批量操作也是一样的。
本课程是 Java Collections Framework的成员。
Summary
Public methods |
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(EnumSet<E> s) 创建一个具有与指定枚举集相同元素类型的枚举集,最初包含相同的元素(如果有)。 |
static <E extends Enum<E>> EnumSet<E> |
copyOf(Collection<E> c) 创建一个从指定集合初始化的枚举集合。 |
static <E extends Enum<E>> EnumSet<E> |
noneOf(Class<E> elementType) 用指定的元素类型创建一个空的枚举集。 |
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) 创建最初包含指定元素的枚举集。 |
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> |
of(E e1, E e2, E e3, E e4) 创建最初包含指定元素的枚举集。 |
static <E extends Enum<E>> EnumSet<E> |
of(E e) 创建最初包含指定元素的枚举集。 |
static <E extends Enum<E>> EnumSet<E> |
range(E from, E to) 创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。 |
Public methods
allOf
EnumSet<E> allOf (Class<E> elementType)
创建一个枚举集,其中包含指定元素类型中的所有元素。
Parameters |
elementType |
Class : the class object of the element type for this enum set |
clone
EnumSet<E> clone ()
返回此套件的副本。
Returns |
EnumSet<E> |
a copy of this set |
complementOf
EnumSet<E> complementOf (EnumSet<E> s)
创建一个具有与指定枚举集相同元素类型的枚举集,最初包含此类型中 未包含在指定集中的所有元素。
Parameters |
s |
EnumSet : the enum set from whose complement to initialize this enum set |
copyOf
EnumSet<E> copyOf (EnumSet<E> s)
创建一个具有与指定枚举集相同元素类型的枚举集,最初包含相同的元素(如果有)。
Parameters |
s |
EnumSet : the enum set from which to initialize this enum set |
copyOf
EnumSet<E> copyOf (Collection<E> c)
创建一个从指定集合初始化的枚举集合。 如果指定的集合是EnumSet实例,则此静态工厂方法的行为与copyOf(EnumSet)
相同。 否则,指定的集合必须至少包含一个元素(以确定新的枚举集的元素类型)。
Parameters |
c |
Collection : the collection from which to initialize this enum set |
noneOf
EnumSet<E> noneOf (Class<E> elementType)
用指定的元素类型创建一个空的枚举集。
Parameters |
elementType |
Class : the class object of the element type for this enum set |
of
EnumSet<E> of (E first,
E... rest)
创建最初包含指定元素的枚举集。 该工厂的参数列表使用可变参数值特性,可用于创建最初包含任意数量元素的枚举集合,但它可能比不使用可变参数的超载运行速度慢。
Parameters |
first |
E : an element that the set is to contain initially |
rest |
E : the remaining elements the set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified elements |
of
EnumSet<E> of (E e1,
E e2,
E e3)
创建最初包含指定元素的枚举集。 这个方法的重载存在用1到5个元素初始化一个枚举集。 提供了使用可变参数功能的第六种重载。 这个重载可以用来创建一个最初包含任意数量的元素的枚举集,但可能比不使用可变参数的重载更慢。
Parameters |
e1 |
E : an element that this set is to contain initially |
e2 |
E : another element that this set is to contain initially |
e3 |
E : another element that this set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified elements |
of
EnumSet<E> of (E e1,
E e2)
创建最初包含指定元素的枚举集。 这个方法的重载存在用1到5个元素初始化一个枚举集。 提供了使用可变参数功能的第六种重载。 这个重载可以用来创建一个最初包含任意数量的元素的枚举集,但可能比不使用可变参数的重载更慢。
Parameters |
e1 |
E : an element that this set is to contain initially |
e2 |
E : another element that this set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified elements |
of
EnumSet<E> of (E e1,
E e2,
E e3,
E e4,
E e5)
创建最初包含指定元素的枚举集。 这个方法的重载存在用1到5个元素初始化一个枚举集。 提供了使用可变参数功能的第六种重载。 这个重载可以用来创建一个最初包含任意数量的元素的枚举集,但可能比不使用可变参数的重载更慢。
Parameters |
e1 |
E : an element that this set is to contain initially |
e2 |
E : another element that this set is to contain initially |
e3 |
E : another element that this set is to contain initially |
e4 |
E : another element that this set is to contain initially |
e5 |
E : another element that this set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified elements |
of
EnumSet<E> of (E e1,
E e2,
E e3,
E e4)
创建最初包含指定元素的枚举集。 这个方法的重载存在用1到5个元素初始化一个枚举集。 提供了使用可变参数功能的第六种重载。 这个重载可以用来创建一个最初包含任意数量的元素的枚举集,但可能比不使用可变参数的重载更慢。
Parameters |
e1 |
E : an element that this set is to contain initially |
e2 |
E : another element that this set is to contain initially |
e3 |
E : another element that this set is to contain initially |
e4 |
E : another element that this set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified elements |
of
EnumSet<E> of (E e)
创建最初包含指定元素的枚举集。 这个方法的重载存在用1到5个元素初始化一个枚举集。 提供了使用可变参数功能的第六种重载。 这个重载可以用来创建一个最初包含任意数量的元素的枚举集,但可能比不使用可变参数的重载更慢。
Parameters |
e |
E : the element that this set is to contain initially |
Returns |
EnumSet<E> |
an enum set initially containing the specified element |
range
EnumSet<E> range (E from,
E to)
创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。 返回的集合将包含端点本身,它们可能是相同的,但不能失序。
Parameters |
from |
E : the first element in the range |
to |
E : the last element in the range |
Returns |
EnumSet<E> |
an enum set initially containing all of the elements in the range defined by the two specified endpoints |