java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.util
类 EnumSet<E extends Enum<E>>

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 实现。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。枚举 set 在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于 int 的“位标志”的替换形式,具有高品质、类型安全的优势。如果指定的 collection 也是一个枚举 set,则批量操作(如 containsAllretainAll)也应运行得非常快。

iterator 方法返回的迭代器按其自然顺序 遍历这些元素(该顺序是声明枚举常量的顺序)。返回的迭代器是弱一致的:它从不抛出 ConcurrentModificationException,也不一定显示在迭代进行时发生的任何 set 修改的效果。

不允许使用 null 元素。试图插入 null 元素将抛出 NullPointerException。但是,试图测试是否出现 null 元素或移除 null 元素将不会抛出异常。

像大多数 collection 一样,EnumSet 是不同步的。如果多个线程同时访问一个枚举 set,并且至少有一个线程修改该 set,则此枚举 set 在外部应该是同步的。这通常是通过对自然封装该枚举 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet(java.util.Set) 方法来“包装”该 set。最好在创建时完成这一操作,以防止意外的非同步访问:

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

实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashSet 副本更快。如果参数是另一个 EnumSet 实例,则诸如 addAll()AbstractSet.removeAll(java.util.Collection) 之类的批量操作也会在固定时间内执行。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.5
另请参见:
EnumMap

方法摘要
static
<E extends Enum<E>>
EnumSet<E>
allOf(Class<E> elementType)
          创建一个包含指定元素类型的所有元素的枚举 set。
 EnumSet<E> clone()
          返回 set 的副本。
static
<E extends Enum<E>>
EnumSet<E>
complementOf(EnumSet<E> s)
          创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所 包含的此类型的所有元素。
static
<E extends Enum<E>>
EnumSet<E>
copyOf(Collection<E> c)
          创建一个从指定 collection 初始化的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
copyOf(EnumSet<E> s)
          创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含相同的元素(如果有的话)。
static
<E extends Enum<E>>
EnumSet<E>
noneOf(Class<E> elementType)
          创建一个具有指定元素类型的空枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E first, E... rest)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4, E e5)
          创建一个最初包含指定元素的枚举 set。
static
<E extends Enum<E>>
EnumSet<E>
range(E from, E to)
          创建一个最初包含由两个指定端点所定义范围内的所有元素的枚举 set。
 
从类 java.util.AbstractSet 继承的方法
equals, hashCode, removeAll
 
从类 java.util.AbstractCollection 继承的方法
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 
从接口 java.util.Set 继承的方法
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray
 

方法详细信息

noneOf

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
创建一个具有指定元素类型的空枚举 set。

参数:
elementType - 此枚举 set 的元素类型的 class 对象
抛出:
NullPointerException - 如果 elementType 为 null

allOf

public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
创建一个包含指定元素类型的所有元素的枚举 set。

参数:
elementType - 此枚举 set 的元素类型的 class 对象
抛出:
NullPointerException - 如果 elementType 为 null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含相同的元素(如果有的话)。

参数:
s - 用于初始化此枚举 set 的枚举 set
抛出:
NullPointerException - 如果 s 为 null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
创建一个从指定 collection 初始化的枚举 set。如果指定的 collection 是一个 EnumSet 实例,则此静态工厂方法的功能与 copyOf(EnumSet) 相同。否则,指定的 collection 必须至少包含一个元素(以确定新枚举 set 的元素类型)。

参数:
c - 用于初始化此枚举 set 的 collection
抛出:
IllegalArgumentException - 如果 c 不是一个 EnumSet 实例,并且不包含元素
NullPointerException - 如果 c 为 null

complementOf

public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所 包含的此类型的所有元素。

参数:
s - 用其补码初始化此枚举 set 的枚举 set
抛出:
NullPointerException - 如果 s 为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e)
创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
e - 此 set 最初包含的元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果 e 为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2)
创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一个元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果任意参数为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3)
创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一个元素
e3 - 此 set 最初要包含的另一个元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果任意参数为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3,
                                                E e4)
创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一个元素
e3 - 此 set 最初要包含的另一个元素
e4 - 此 set 最初要包含的另一个元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果任意参数为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1,
                                                E e2,
                                                E e3,
                                                E e4,
                                                E e5)
创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
e1 - 此 set 最初要包含的元素
e2 - 此 set 最初要包含的另一个元素
e3 - 此 set 最初要包含的另一个元素
e4 - 此 set 最初要包含的另一个元素
e5 - 此 set 最初要包含的另一个元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果任意参数为 null

of

public static <E extends Enum<E>> EnumSet<E> of(E first,
                                                E... rest)
创建一个最初包含指定元素的枚举 set。此工厂方法的参数列表使用变量参数功能,该方法可以创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。

参数:
first - 此 set 最初要包含的元素
rest - 此 set 最初要包含的其余元素
返回:
最初包含指定元素的枚举 set
抛出:
NullPointerException - 如果任意参数为 null,或 rest 为 null

range

public static <E extends Enum<E>> EnumSet<E> range(E from,
                                                   E to)
创建一个最初包含由两个指定端点所定义范围内的所有元素的枚举 set。返回的 set 将包含端点本身,这两个端点可能相同,但顺序不能颠倒。

参数:
from - 该范围中的第一个元素
to - 妨碍范围中的最后一个元素
返回:
最初包含由两个指定端点所定义范围内的所有元素的枚举 set
抛出:
NullPointerException - 如果 firstlast 为 null
IllegalArgumentException - 如果 first.compareTo(last) > 0

clone

public EnumSet<E> clone()
返回 set 的副本。

覆盖:
Object 中的 clone
返回:
set 的副本
另请参见:
Cloneable

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策