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
接口 Set<E>

所有超级接口:
Collection<E>, Iterable<E>
所有已知子接口:
SortedSet<E>
所有已知实现类:
AbstractSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet

public interface Set<E>
extends Collection<E>

一个不包含重复元素的 collection。更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

在所有构造方法以及 addequalshashCode 方法的协定上,Set 接口还加入了其他规定,这些规定超出了从 Collection 接口所继承的内容。出于方便考虑,它还包括了其他继承方法的声明(这些声明的规范已经专门针对 Set 接口进行了修改,但是没有包含任何其他的规定)。

对这些构造方法的其他规定是(不要奇怪),所有构造方法必须创建一个不包含重复元素的 set(正如上面所定义的)。

注:如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 equals 比较的方式改变对象的值,那么 set 的行为就是不确定的。此项禁止的一个特殊情况是不允许某个 set 包含其自身作为元素。

某些 set 实现对其所包含的元素有所限制。例如,某些实现禁止 null 元素,而某些则对其元素的类型所有限制。试图添加不合格的元素会抛出未经检查的异常,通常是 NullPointerExceptionClassCastException。试图查询不合格的元素是否存在可能会抛出异常,也可能简单地返回 false;某些实现会采用前一种行为,而某些则采用后者。概括地说,试图对不合格元素执行操作时,如果完成该操作后不会导致在 set 中插入不合格的元素,则该操作可能抛出一个异常,也可能成功,这取决于实现的选择。此接口的规范中将这样的异常标记为“可选”。

此接口是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
Collection, List, SortedSet, HashSet, TreeSet, AbstractSet, Collections.singleton(java.lang.Object), Collections.EMPTY_SET

方法摘要
 boolean add(E o)
          如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
 boolean addAll(Collection<? extends E> c)
          如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。
 void clear()
          移除 set 中的所有元素(可选操作)。
 boolean contains(Object o)
          如果 set 包含指定的元素,则返回 true
 boolean containsAll(Collection<?> c)
          如果此 set 包含指定 collection 的所有元素,则返回 true
 boolean equals(Object o)
          比较指定对象与此 set 的相等性。
 int hashCode()
          返回 set 的哈希码值。
 boolean isEmpty()
          如果 set 不包含元素,则返回 true
 Iterator<E> iterator()
          返回在此 set 中的元素上进行迭代的迭代器。
 boolean remove(Object o)
          如果 set 中存在指定的元素,则将其移除(可选操作)。
 boolean removeAll(Collection<?> c)
          移除 set 中那些包含在指定 collection 中的元素(可选操作)。
 boolean retainAll(Collection<?> c)
          仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。
 int size()
          返回 set 中的元素数(其容量)。
 Object[] toArray()
          返回一个包含 set 中所有元素的数组。
<T> T[]
toArray(T[] a)
          返回一个包含 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。
 

方法详细信息

size

int size()
返回 set 中的元素数(其容量)。如果 set 包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE

指定者:
接口 Collection<E> 中的 size
返回:
set 中的元素数(其容量)。

isEmpty

boolean isEmpty()
如果 set 不包含元素,则返回 true

指定者:
接口 Collection<E> 中的 isEmpty
返回:
如果 set 不包含元素,则返回 true

contains

boolean contains(Object o)
如果 set 包含指定的元素,则返回 true。更正式地说,当且仅当 set 包含的元素 e 满足下列条件时才返回 true(o==null ? e==null : o.equals(e))

指定者:
接口 Collection<E> 中的 contains
参数:
o - 要测试 set 中是否存在的元素。
返回:
如果 set 包含指定的元素,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)。
NullPointerException - 如果指定的元素为 null 并且此 set 不支持 null 元素(可选)。

iterator

Iterator<E> iterator()
返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。

指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 Iterable<E> 中的 iterator
返回:
在此 set 中的元素上进行迭代的迭代器。

toArray

Object[] toArray()
返回一个包含 set 中所有元素的数组。遵守 Collection.toArray 方法的常规协定。

指定者:
接口 Collection<E> 中的 toArray
返回:
包含 set 中所有元素的数组。

toArray

<T> T[] toArray(T[] a)
返回一个包含 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。遵守 Collection.toArray(Object[]) 方法的常规协定。

指定者:
接口 Collection<E> 中的 toArray
参数:
a - 存储 set 中元素的数组(如果其足够大的话);否则出于这一目的分配一个具有相同运行时类型的新数组。
返回:
包含 set 元素的数组。
抛出:
ArrayStoreException - a 的运行时类型不是 set 中所有元素的运行时类型的超类型。
NullPointerException - 如果指定的数组为 null

add

boolean add(E o)
如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。更正式地说,如果此 set 没有包含满足下列条件的元素 e,则向 set 中添加指定的元素 o(o==null ? e==null :o.equals(e))。如果此 set 已经包含指定的元素,则该调用不改变此 set 并返回 false。结合构造方法上的限制,这就可以确保 set 永远不包含重复的元素。

上述规定并未暗示 set 必须接受所有元素;set 可以拒绝添加任意特定的元素,包括 null,并抛出异常,这与 Collection.add 规范中所描述的一样。每个 set 实现应该明确地记录对其可能包含元素的所有限制。

指定者:
接口 Collection<E> 中的 add
参数:
o - 要添加到 set 中的元素。
返回:
如果 set 尚未包含指定的元素,则返回 true
抛出:
UnsupportedOperationException - 如果此 set 不支持 add 方法。
ClassCastException - 如果指定元素的类不允许它添加到此 set。
NullPointerException - 如果指定的元素为 null 并且此 set 不支持 null 元素。
IllegalArgumentException - 如果指定元素的某方面不允许它添加到此 set。

remove

boolean remove(Object o)
如果 set 中存在指定的元素,则将其移除(可选操作)。更正式地说,如果 set 中包含满足下列条件的元素 e,则移除它:(o==null ? e==null : o.equals(e))。如果 set 包含指定的元素(或等价元素,如果此 set 随调用的结果发生变化),则返回 true(一旦调用返回,则 set 不再包含指定的元素)。

指定者:
接口 Collection<E> 中的 remove
参数:
o - 从 set 中移除的对象(如果存在)。
返回:
如果 set 包含指定的对象,则返回 true。
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)。
NullPointerException - 如果指定的元素为 null,并且此 set 不支持 null 元素(可选)。
UnsupportedOperationException - 如果此 set 不支持 remove 方法。

containsAll

boolean containsAll(Collection<?> c)
如果此 set 包含指定 collection 的所有元素,则返回 true。如果指定的 collection 也是一个 set,那么当该 collection 是此 set 的子集 时返回 true

指定者:
接口 Collection<E> 中的 containsAll
参数:
c - 检查是否包含在此 set 中的 collection。
返回:
如果此 set 包含指定 collection 中的所有元素,则返回 true
抛出:
ClassCastException - 如果指定 collection 中的一个或多个元素的类型与此 set 不兼容(可选)。
NullPointerException - 如果指定的 collection 包含一个或多个 null 元素并且此 set 不支持 null 元素(可选)。
NullPointerException - 如果指定的 collection 为 null
另请参见:
contains(Object)

addAll

boolean addAll(Collection<? extends E> c)
如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。如果指定的 collection 也是一个 set,则 addAll 操作会实际修改此 set,这样其值是两个 set 的一个并集。如果操作正在进行的同时修改了指定的 collection,则此操作的行为没有指定。

指定者:
接口 Collection<E> 中的 addAll
参数:
c - 要将其元素添加到 set 中的 collection。
返回:
如果此 set 随调用的结果发生改变,则返回 true
抛出:
UnsupportedOperationException - 如果 set 不支持 addAll 方法。
ClassCastException - 如果某些指定 collection 元素的类不允许它添加到此 set。
NullPointerException - 如果指定的 collection 包含一个或多个 null 元素并且此 set 不支持 null 元素,或者指定的 collection 为 null
IllegalArgumentException - 如果某些指定的 collection 元素的某方面不允许它添加到此 set。
另请参见:
add(Object)

retainAll

boolean retainAll(Collection<?> c)
仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。换句话说,移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个交集

指定者:
接口 Collection<E> 中的 retainAll
参数:
c - 定义此 set 将要保留哪些元素的 collection。
返回:
如果此 collection 随调用的结果发生改变,则返回 true
抛出:
UnsupportedOperationException - 如果此 Collection 不支持 retainAll 方法。