Most visited

Recently visited

Added in API level 1

EnumSet

public abstract class EnumSet
extends AbstractSet<E extends Enum<E>> implements Cloneable, Serializable

java.lang.Object
   ↳ java.util.AbstractCollection<E extends java.lang.Enum<E>>
     ↳ java.util.AbstractSet<E extends java.lang.Enum<E>>
       ↳ java.util.EnumSet<E extends java.lang.Enum<E>>


用于枚举类型的专用Set实现。 枚举集合中的所有元素必须来自单个枚举类型,该集合类型在创建集合时显式或隐式指定。 枚举集在内部表示为位向量。 这种表示非常紧凑和高效。 这个类的空间和时间表现应该足够好,以允许其用作传统的基于int的“比特标志”的高质量,类型安全的替代品。 即使批量操作(如containsAllretainAll )应该运行得非常快,如果它们的参数也是一个枚举集合。

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)

创建最初包含由两个指定端点定义的范围内的所有元素的枚举集。

Inherited methods

From class java.util.AbstractSet
From class java.util.AbstractCollection
From class java.lang.Object
From interface java.util.Set
From interface java.util.Collection
From interface java.lang.Iterable

Public methods

allOf

Added in API level 1
EnumSet<E> allOf (Class<E> elementType)

创建一个枚举集,其中包含指定元素类型中的所有元素。

Parameters
elementType Class: the class object of the element type for this enum set
Returns
EnumSet<E>
Throws
NullPointerException if elementType is null

clone

Added in API level 1
EnumSet<E> clone ()

返回此套件的副本。

Returns
EnumSet<E> a copy of this set

complementOf

Added in API level 1
EnumSet<E> complementOf (EnumSet<E> s)

创建一个具有与指定枚举集相同元素类型的枚举集,最初包含此类型中 包含在指定集中的所有元素。

Parameters
s EnumSet: the enum set from whose complement to initialize this enum set
Returns
EnumSet<E>
Throws
NullPointerException if s is null

copyOf

Added in API level 1
EnumSet<E> copyOf (EnumSet<E> s)

创建一个具有与指定枚举集相同元素类型的枚举集,最初包含相同的元素(如果有)。

Parameters
s EnumSet: the enum set from which to initialize this enum set
Returns
EnumSet<E>
Throws
NullPointerException if s is null

copyOf

Added in API level 1
EnumSet<E> copyOf (Collection<E> c)

创建一个从指定集合初始化的枚举集合。 如果指定的集合是EnumSet实例,则此静态工厂方法的行为与copyOf(EnumSet)相同。 否则,指定的集合必须至少包含一个元素(以确定新的枚举集的元素类型)。

Parameters
c Collection: the collection from which to initialize this enum set
Returns
EnumSet<E>
Throws
IllegalArgumentException if c is not an EnumSet instance and contains no elements
NullPointerException if c is null

noneOf

Added in API level 1
EnumSet<E> noneOf (Class<E> elementType)

用指定的元素类型创建一个空的枚举集。

Parameters
elementType Class: the class object of the element type for this enum set
Returns
EnumSet<E>
Throws
NullPointerException if elementType is null

of

Added in API level 1
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
Throws
NullPointerException if any of the specified elements are null, or if rest is null

of

Added in API level 1
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
Throws
NullPointerException if any parameters are null

of

Added in API level 1
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
Throws
NullPointerException if any parameters are null

of

Added in API level 1
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
Throws
NullPointerException if any parameters are null

of

Added in API level 1
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
Throws
NullPointerException if any parameters are null

of

Added in API level 1
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
Throws
NullPointerException if e is null

range

Added in API level 1
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
Throws
NullPointerException if from or to are null
IllegalArgumentException if from.compareTo(to) > 0

Hooray!