Module  java.base
软件包  java.util

Class EnumSet<E extends Enum<E>>

  • All Implemented Interfaces:
    SerializableCloneableIterable<E>Collection<E>Set<E>


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

    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
    • 方法详细信息

      • 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 - 如果 fromto为空
        IllegalArgumentException - 如果是 from.compareTo(to) > 0
      • clone

        public EnumSet<E> clone​()
        返回此集合的副本。
        重写:
        cloneObject
        结果
        这套的副本
        另请参见:
        Cloneable