模块 java.base
 java.util

类 EnumSet<E extends Enum <E>>

类型参数:
E - 此集合维护的元素的枚举类型
所有已实现的接口:
Serializable , Cloneable , Iterable<E> , Collection<E> , Set<E>

public abstract sealed class EnumSet<E extends Enum <E>> extends AbstractSet <E> implements Cloneable , Serializable
用于枚举类型的专用 Set 实现。枚举集中的所有元素都必须来自在创建集合时显式或隐式指定的单个枚举类型。枚举集在内部表示为位向量。这种表示非常紧凑和高效。此类的空间和时间性能应该足以允许将其用作传统的基于 int 的“位标志”的高质量、类型安全的替代方案。如果它们的参数也是枚举集,即使是批量操作(例如 containsAllretainAll )也应该运行得非常快。

iterator方法返回的迭代器遍历它们中的元素自然秩序(声明枚举常量的顺序)。返回的迭代器是弱一致:它永远不会抛出 ConcurrentModificationException 并且它可能会或可能不会显示在迭代过程中对集合进行的任何修改的影响。

不允许使用空元素。尝试插入空元素将抛出 NullPointerException 。然而,尝试测试是否存在空元素或删除空元素将正常运行。

与大多数集合实现一样,EnumSet 不是同步的。如果多个线程同时访问枚举集,并且至少有一个线程修改了该集,则应该在外部进行同步。这通常是通过同步一些自然封装枚举集的对象来实现的。如果不存在这样的对象,则应使用 Collections.synchronizedSet(java.util.Set<T>) 方法“包装”该集合。这最好在创建时完成,以防止意外的不同步访问:

 Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
 

实施注意事项:所有基本操作都在恒定时间内执行。它们很可能(虽然不能保证)比它们的 HashSet 对应物快得多。如果它们的参数也是一个枚举集,即使批量操作也会在恒定时间内执行。

此类是 Java 集合框架 的成员。

自从:
1.5
参见:
  • 方法详情

    • 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)
      创建一个与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素not包含在指定的集合中。
      类型参数:
      E - 枚举集中元素的类
      参数:
      s - 枚举集,其补码用于初始化此枚举集
      返回:
      此集合中指定集合的补集
      抛出:
      NullPointerException - 如果 s 为空
    • of

      public static <E extends Enum <E>> EnumSet <E> of(E e)
      创建一个最初包含指定元素的枚举集。存在此方法的重载以使用一到五个元素初始化枚举集。提供了第六个重载,它使用可变参数特性。此重载可用于创建最初包含任意数量元素的枚举集,但运行速度可能比不使用可变参数的重载慢。
      类型参数:
      E - 指定元素和集合的类
      参数:
      e - 该集合最初包含的元素
      返回:
      最初包含指定元素的枚举集
      抛出:
      NullPointerException - 如果 e 为空
    • of

      public static <E extends Enum <E>> EnumSet <E> of(E e1, E e2)
      创建一个最初包含指定元素的枚举集。存在此方法的重载以使用一到五个元素初始化枚举集。提供了第六个重载,它使用可变参数特性。此重载可用于创建最初包含任意数量元素的枚举集,但运行速度可能比不使用可变参数的重载慢。
      类型参数:
      E - 参数元素和集合的类
      参数:
      e1 - 该集合最初包含的元素
      e2 - 该集合最初包含的另一个元素
      返回:
      最初包含指定元素的枚举集
      抛出:
      NullPointerException - 如果任何参数为空
    • of

      public static <E extends Enum <E>> EnumSet <E> of(E e1, E e2, E e3)
      创建一个最初包含指定元素的枚举集。存在此方法的重载以使用一到五个元素初始化枚举集。提供了第六个重载,它使用可变参数特性。此重载可用于创建最初包含任意数量元素的枚举集,但运行速度可能比不使用可变参数的重载慢。
      类型参数:
      E - 参数元素和集合的类
      参数:
      e1 - 该集合最初包含的元素
      e2 - 该集合最初包含的另一个元素
      e3 - 该集合最初包含的另一个元素
      返回:
      最初包含指定元素的枚举集
      抛出:
      NullPointerException - 如果任何参数为空
    • of

      public static <E extends Enum <E>> EnumSet <E> of(E e1, E e2, E e3, E e4)
      创建一个最初包含指定元素的枚举集。存在此方法的重载以使用一到五个元素初始化枚举集。提供了第六个重载,它使用可变参数特性。此重载可用于创建最初包含任意数量元素的枚举集,但运行速度可能比不使用可变参数的重载慢。
      类型参数:
      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)
      创建一个最初包含指定元素的枚举集。存在此方法的重载以使用一到五个元素初始化枚举集。提供了第六个重载,它使用可变参数特性。此重载可用于创建最初包含任意数量元素的枚举集,但运行速度可能比不使用可变参数的重载慢。
      类型参数:
      E - 参数元素和集合的类
      参数:
      e1 - 该集合最初包含的元素
      e2 - 该集合最初包含的另一个元素
      e3 - 该集合最初包含的另一个元素
      e4 - 该集合最初包含的另一个元素
      e5 - 该集合最初包含的另一个元素
      返回:
      最初包含指定元素的枚举集
      抛出:
      NullPointerException - 如果任何参数为空
    • of

      @SafeVarargs public static <E extends Enum <E>> EnumSet <E> of(E first, E... rest)
      创建一个最初包含指定元素的枚举集。这个工厂,其参数列表使用可变参数特性,可用于创建一个最初包含任意数量元素的枚举集,但它可能比不使用可变参数的重载运行得更慢。
      类型参数:
      E - 参数元素和集合的类
      参数:
      first - 集合最初包含的元素
      rest - 该集合最初要包含的剩余元素
      返回:
      最初包含指定元素的枚举集
      抛出:
      NullPointerException - 如果任何指定元素为空,或者如果 rest 为空
    • range

      public static <E extends Enum <E>> EnumSet <E> range(E from, E to)
      创建一个枚举集,最初包含由两个指定端点定义的范围内的所有元素。返回的集合将包含端点本身,它们可以相同但不能乱序。
      类型参数:
      E - 参数元素和集合的类
      参数:
      from - 范围内的第一个元素
      to - 范围内的最后一个元素
      返回:
      一个枚举集,最初包含两个指定端点定义的范围内的所有元素
      抛出:
      NullPointerException - 如果 fromto 为空
      IllegalArgumentException - 如果 from.compareTo(to) > 0
    • clone

      public EnumSet <E > clone()
      返回此集合的副本。
      重写:
      clone 在类 Object
      返回:
      这套的副本
      参见: