public interface Set
implements Collection<E>
java.util.Set<E> |
Known Indirect Subclasses
AbstractSet<E>,
ArraySet<E>,
ConcurrentHashMap.KeySetView<K, V>,
ConcurrentSkipListSet<E>,
CopyOnWriteArraySet<E>,
EnumSet<E extends
Enum<E>>,
HashSet<E>,
LinkedHashSet<E>,
NavigableSet<E>,
SortedSet<E>,
TreeSet<E>
|
一个不包含重复元素的集合。 更正式地,集包含没有对元件e1
和e2
使得e1.equals(e2)
,和至多一个空元素。 正如其名称所暗示的那样,该界面模拟数学集抽象。
该Set接口放置额外的约定,超过从Collection接口继承,所有构造函数的合同,而位于该add,equals和hashCode方法合同。 为方便起见,此处还包括其他继承方法的声明。 (这些声明附带的规范已针对Set界面进行了调整 ,但不包含任何其他规定。)
对构造函数的附加规定毫不奇怪,所有构造函数都必须创建一个不包含重复元素(如上所定义)的集合。
注意:如果可变对象用作集合元素,必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是该集合中的元素,则不会指定集的行为。 这种禁止的一个特例是,一个集合不允许自己包含一个元素。
某些集合实现对它们可能包含的元素有限制。 例如,有些实现禁止使用空元素,有些实现对元素类型有限制。 尝试添加不合格的元素会引发未检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者它可能仅返回false; 一些实现将展现前一种行为,一些将展现后者。 更一般地说,试图对不合格的元素进行操作,其完成不会导致将不合格的元素插入到集合中可能会引发异常,或者可能会成功执行。 这种例外在该接口的规范中被标记为“可选”。
该界面是 Java Collections Framework的成员。
Public methods |
|
---|---|
abstract boolean |
add(E e) 如果指定的元素尚不存在(可选操作),则将此元素添加到此集合中。 |
abstract boolean |
addAll(Collection<? extends E> c) 如果它们尚不存在,则将指定集合中的所有元素添加到此集合(可选操作)。 |
abstract void |
clear() 从该组中删除所有元素(可选操作)。 |
abstract boolean |
contains(Object o) 如果此集合包含指定的元素,则返回 true 。 |
abstract boolean |
containsAll(Collection<?> c) 如果此集合包含指定集合的所有元素,则返回 true 。 |
abstract boolean |
equals(Object o) 将指定的对象与此集合进行相等比较。 |
abstract int |
hashCode() 返回此集合的哈希码值。 |
abstract boolean |
isEmpty() 如果此集合不包含元素,则返回 true 。 |
abstract Iterator<E> |
iterator() 返回此集合中元素的迭代器。 |
abstract boolean |
remove(Object o) 如果存在(可选操作),则从该集合中删除指定的元素。 |
abstract boolean |
removeAll(Collection<?> c) 从该集合中删除指定集合中包含的所有元素(可选操作)。 |
abstract boolean |
retainAll(Collection<?> c) 只保留包含在指定集合中的元素(可选操作)。 |
abstract int |
size() 返回此集合中元素的数量(基数)。 |
default Spliterator<E> |
spliterator() 在此集合中的元素上创建一个 |
abstract <T> T[] |
toArray(T[] a) 返回包含此集合中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 |
abstract Object[] |
toArray() 返回包含此集合中所有元素的数组。 |
Inherited methods |
|
---|---|
From interface java.util.Collection
|
|
From interface java.lang.Iterable
|
boolean add (E e)
如果指定的元素尚不存在(可选操作),则将此元素添加到此集合中。 更正式地说,如果该集合不包含元素e2,例如(e==null ? e2==null : e.equals(e2)) ,则将指定的元素e添加到该集合。 如果这个集合已经包含这个元素,那么这个调用就会保持这个集合不变并且返回false 。 结合对构造函数的限制,这可以确保集合永远不会包含重复的元素。
上述规定并不意味着集合必须接受所有元素; 集合可以拒绝添加任何特定元素,包括null ,并抛出异常,如Collection.add
的规范中Collection.add
。 个别集合的实现应该清楚地记录它们可能包含的元素的任何限制。
Parameters | |
---|---|
e |
E : element to be added to this set |
Returns | |
---|---|
boolean |
true if this set did not already contain the specified element |
Throws | |
---|---|
UnsupportedOperationException |
if the add operation is not supported by this set |
ClassCastException |
if the class of the specified element prevents it from being added to this set |
NullPointerException |
if the specified element is null and this set does not permit null elements |
IllegalArgumentException |
if some property of the specified element prevents it from being added to this set |
boolean addAll (Collection<? extends E> c)
如果它们尚不存在,则将指定集合中的所有元素添加到此集合(可选操作)。 如果指定的集合也是集合,则addAll操作会有效地修改此集合,使其值为两个集合的并集。 如果在操作过程中修改了指定的集合,则此操作的行为未定义。
Parameters | |
---|---|
c |
Collection : collection containing elements to be added to this set |
Returns | |
---|---|
boolean |
true if this set changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the addAll operation is not supported by this set |
ClassCastException |
if the class of an element of the specified collection prevents it from being added to this set |
NullPointerException |
if the specified collection contains one or more null elements and this set does not permit null elements, or if the specified collection is null |
IllegalArgumentException |
if some property of an element of the specified collection prevents it from being added to this set |
也可以看看:
void clear ()
从该组中删除所有元素(可选操作)。 此通话返回后,该设置将为空。
Throws | |
---|---|
UnsupportedOperationException |
if the clear method is not supported by this set |
boolean contains (Object o)
如果此集合包含指定的元素,则返回true 。 更正式地,返回true当且仅当这个集合包含一个元素e,例如(o==null ? e==null : o.equals(e)) 。
Parameters | |
---|---|
o |
Object : element whose presence in this set is to be tested |
Returns | |
---|---|
boolean |
true if this set contains the specified element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this set (optional) |
NullPointerException |
if the specified element is null and this set does not permit null elements (optional) |
boolean containsAll (Collection<?> c)
如果此集合包含指定集合的所有元素,则返回true 。 如果指定的集合也是集合,则此方法返回true,如果它是此集合的子集。
Parameters | |
---|---|
c |
Collection : collection to be checked for containment in this set |
Returns | |
---|---|
boolean |
true if this set contains all of the elements of the specified collection |
Throws | |
---|---|
ClassCastException |
if the types of one or more elements in the specified collection are incompatible with this set (optional) |
NullPointerException |
if the specified collection contains one or more null elements and this set does not permit null elements (optional), or if the specified collection is null |
也可以看看:
boolean equals (Object o)
将指定的对象与此集合进行相等比较。 如果指定的对象也是一个集合,则两个集合具有相同的大小,并且指定集合中的每个成员都包含在此集合中(或等价地,此集合中的每个成员都包含在指定集合中),则返回true 。 该定义确保equals方法在设置接口的不同实现之间正常工作。
Parameters | |
---|---|
o |
Object : object to be compared for equality with this set |
Returns | |
---|---|
boolean |
true if the specified object is equal to this set |
int hashCode ()
返回此集合的哈希码值。 一组的哈希码被定义为在该组中的元素,其中一个null元件的哈希码被定义为零的散列码的总和。 这确保s1.equals(s2)意味着s1.hashCode()==s2.hashCode()适用于任何两套s1和s2 ,这是根据hashCode()
总合同的hashCode()
。
Returns | |
---|---|
int |
the hash code value for this set |
也可以看看:
boolean isEmpty ()
如果此集合不包含元素,则返回 true 。
Returns | |
---|---|
boolean |
true if this set contains no elements |
Iterator<E> iterator ()
返回此集合中元素的迭代器。 这些元素以特定的顺序返回(除非这个集合是某个提供担保的类的实例)。
Returns | |
---|---|
Iterator<E> |
an iterator over the elements in this set |
boolean remove (Object o)
如果存在(可选操作),则从该集合中删除指定的元素。 更正式地说,删除一个元素e,例如(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样的元素。 如果该集合包含该元素(或者等价地,如果该集合因该调用而改变),则返回true 。 (一旦调用返回,此集合将不包含该元素。)
Parameters | |
---|---|
o |
Object : object to be removed from this set, if present |
Returns | |
---|---|
boolean |
true if this set contained the specified element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this set (optional) |
NullPointerException |
if the specified element is null and this set does not permit null elements (optional) |
UnsupportedOperationException |
if the remove operation is not supported by this set |
boolean removeAll (Collection<?> c)
从该集合中删除指定集合中包含的所有元素(可选操作)。 如果指定的集合也是集合,则此操作会有效地修改此集合,使其值为两个集合的不对称集合差异 。
Parameters | |
---|---|
c |
Collection : collection containing elements to be removed from this set |
Returns | |
---|---|
boolean |
true if this set changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the removeAll operation is not supported by this set |
ClassCastException |
if the class of an element of this set is incompatible with the specified collection (optional) |
NullPointerException |
if this set contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
也可以看看:
boolean retainAll (Collection<?> c)
只保留包含在指定集合中的元素(可选操作)。 换句话说,从该集合中删除所有未包含在指定集合中的元素。 如果指定的集合也是集合,则此操作将有效地修改此集合,使其值为两个集合的交集 。
Parameters | |
---|---|
c |
Collection : collection containing elements to be retained in this set |
Returns | |
---|---|
boolean |
true if this set changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the retainAll operation is not supported by this set |
ClassCastException |
if the class of an element of this set is incompatible with the specified collection (optional) |
NullPointerException |
if this set contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
也可以看看:
int size ()
返回此集合中元素的数量(基数)。 如果此集合包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE 。
Returns | |
---|---|
int |
the number of elements in this set (its cardinality) |
Spliterator<E> spliterator ()
在此集合中的元素上创建一个 Spliterator
。
Spliterator
报告DISTINCT
。 实施应记录附加特征值的报告。
Iterator
. The spliterator inherits the fail-fast properties of the set's iterator. 创建的 Spliterator
另外报告 SIZED
。
Spliterator
additionally reports SUBSIZED
.Returns | |
---|---|
Spliterator<E> |
a Spliterator over the elements in this set |
T[] toArray (T[] a)
返回包含此集合中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 如果该集合适合指定的数组,它将返回其中。 否则,将使用指定数组的运行时类型和该组的大小分配一个新数组。
如果这个集合符合指定数组,并且有空余空间(即,数组的元素多于这个集合),那么紧跟在集合结束之后的数组中的元素将被设置为null 。 ( 只有当调用者知道这个集合不包含任何空元素时,这在确定这个集合的长度时很有用。)
如果这个集合保证它的迭代器返回它的元素的顺序,这个方法必须以相同的顺序返回元素。
与toArray()
方法一样,此方法充当基于阵列和基于集合的API之间的桥梁。 此外,该方法允许精确控制输出数组的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是一个已知只包含字符串的集合。 以下代码可用于将该集转储到新分配的String数组中:
String[] y = x.toArray(new String[0]);Note that toArray(new Object[0]) is identical in function to toArray().
Parameters | |
---|---|
a |
T : the array into which the elements of this set are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. |
Returns | |
---|---|
T[] |
an array containing all the elements in this set |
Throws | |
---|---|
ArrayStoreException |
if the runtime type of the specified array is not a supertype of the runtime type of every element in this set |
NullPointerException |
if the specified array is null |
Object[] toArray ()
返回包含此集合中所有元素的数组。 如果这个集合保证它的迭代器返回它的元素的顺序,这个方法必须以相同的顺序返回元素。
返回的数组将是“安全的”,因为这个集合没有引用它。 (换句话说,即使这个集合由数组支持,这个方法也必须分配一个新数组)。 调用者可以自由修改返回的数组。
此方法充当基于数组和基于集合的API之间的桥梁。
Returns | |
---|---|
Object[] |
an array containing all the elements in this set |