E
- 由此集合维护的元素的类型
public interface Set<E> extends Collection<E>
e1
和e2
,使得e1.equals(e2)
,并且最多一个空元素。
正如其名称所暗示的那样,这个接口模拟了数学集抽象。
Set接口除了继承自Collection接口的所有构造函数的合同以及add,equals和hashCode方法的合同外 , 还 增加了其他规定。 其他继承方法的声明也包括在这里以方便。 (伴随这些声明的规范已经量身定做Set接口,但它们不包含任何附加的规定。)
构造函数的额外规定并不奇怪,所有构造函数都必须创建一个不包含重复元素的集合(如上所定义)。
注意:如果可变对象用作设置元素,则必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是集合中的元素, 则不指定集合的行为。 这种禁止的一个特殊情况是,一个集合不允许将其本身作为一个元素。
一些集合实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,有些实现对元素的类型有限制。 尝试添加不合格元素会引发未经检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,尝试对不符合条件的元素的操作,其完成不会导致不合格元素插入到集合中,可能会导致异常,或者可能会成功执行该选项。 此异常在此接口的规范中标记为“可选”。
此接口是成员Java Collections Framework 。
Collection
, List
, SortedSet
, HashSet
, TreeSet
, AbstractSet
, Collections.singleton(java.lang.Object)
, Collections.EMPTY_SET
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
如果指定的元素不存在,则将其指定的元素添加(可选操作)。
|
boolean |
addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(如果尚未存在)(可选操作)。
|
void |
clear()
从此集合中删除所有元素(可选操作)。
|
boolean |
contains(Object o)
如果此集合包含指定的元素,则返回
true 。
|
boolean |
containsAll(Collection<?> c)
返回
true如果此集合包含所有指定集合的元素。
|
boolean |
equals(Object o)
将指定的对象与此集合进行比较以实现相等。
|
int |
hashCode()
返回此集合的哈希码值。
|
boolean |
isEmpty()
如果此集合不包含元素,则返回
true 。
|
Iterator<E> |
iterator()
返回此集合中元素的迭代器。
|
boolean |
remove(Object o)
如果存在,则从该集合中删除指定的元素(可选操作)。
|
boolean |
removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。
|
boolean |
retainAll(Collection<?> c)
仅保留该集合中包含在指定集合中的元素(可选操作)。
|
int |
size()
返回此集合中的元素数(其基数)。
|
default Spliterator<E> |
spliterator()
在此集合中的元素上创建一个
Spliterator 。
|
Object[] |
toArray()
返回一个包含此集合中所有元素的数组。
|
<T> T[] |
toArray(T[] a)
返回一个包含此集合中所有元素的数组;
返回的数组的运行时类型是指定数组的运行时类型。
|
parallelStream, removeIf, stream
int size()
size
在接口
Collection<E>
boolean isEmpty()
isEmpty
中的
Collection<E>
boolean contains(Object o)
contains
在界面
Collection<E>
o
- 要在此集合中存在的元素将被测试
ClassCastException
- 如果指定元素的类型与此集不兼容(
optional )
NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素(
optional )
Object[] toArray()
返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个数组是由数组支持的)。 因此,调用者可以自由地修改返回的数组。
此方法充当基于阵列和基于集合的API之间的桥梁。
toArray
在接口
Collection<E>
<T> T[] toArray(T[] a)
如果这个集合适合指定的数组,有空余的空间(即,该数组的元素多于此集合),紧随集合结束后的数组中的元素设置为null 。 (这仅在调用者知道此集合不包含任何空元素时才可用于确定此集合的长度。)
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
像toArray()
方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是一个已知只包含字符串的集合。 下面的代码可用于所述一组转储到的String一个新分配的阵列:
String[] y = x.toArray(new String[0]);
请注意, toArray(new Object[0])的功能与toArray()相同 。
toArray
在接口
Collection<E>
T
- 包含集合的数组的运行时类型
a
- 要存储此集合的元素的数组,如果它足够大;
否则,为此目的分配相同运行时类型的新数组。
ArrayStoreException
- 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型
NullPointerException
- 如果指定的数组为空
boolean add(E e)
上述规定并不意味着集合必须接受所有要素; 套可以拒绝增加任何特定元件,包括null,并且抛出异常,作为用于本说明书中描述Collection.add
。 单个集合实现应清楚地记录对它们可能包含的元素的任何限制。
add
在界面
Collection<E>
e
- 要添加到此集合的元素
UnsupportedOperationException
-如果
add操作不受此组支持
ClassCastException
- 如果指定元素的类阻止将其添加到此集合
NullPointerException
- 如果指定的元素为空,并且此集合不允许空元素
IllegalArgumentException
- 如果指定元素的某些属性阻止将其添加到此集合
boolean remove(Object o)
remove
在界面
Collection<E>
o
- 要从此集合中删除的对象(如果存在)
ClassCastException
- 如果指定元素的类型与此集不兼容(
optional )
NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素(
optional )
UnsupportedOperationException
- 如果该
集合不支持remove操作
boolean containsAll(Collection<?> c)
containsAll
在接口
Collection<E>
c
- 要在此集合中检查收集的集合
ClassCastException
- 如果指定集合中的一个或多个元素的类型与此集合不兼容(
optional )
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素(
optional ),或者如果指定的集合为空
contains(Object)
boolean addAll(Collection<? extends E> c)
addAll
在接口
Collection<E>
c
- 包含要添加到此集合的元素的集合
UnsupportedOperationException
-如果
addAll操作不受此组支持
ClassCastException
- 如果指定集合的元素的类阻止将其添加到此集合
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素,或者如果指定的集合为空
IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此集合
add(Object)
boolean retainAll(Collection<?> c)
retainAll
在界面
Collection<E>
c
- 包含要保留在此集合中的元素的集合
UnsupportedOperationException
-如果
retainAll操作不受此组支持
ClassCastException
- 如果此集合的元素的类与指定的集合不兼容(
optional )
NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素(
optional ),或者如果指定的集合为空
remove(Object)
boolean removeAll(Collection<?> c)
removeAll
在接口
Collection<E>
c
- 包含要从此集合中删除的元素的集合
UnsupportedOperationException
-如果
removeAll操作不受此组支持
ClassCastException
- 如果此集合的元素的类与指定的集合不兼容(
optional )
NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素(
optional ),或者如果指定的集合为空
remove(Object)
,
contains(Object)
void clear()
clear
在界面
Collection<E>
UnsupportedOperationException
- 如果此集合不支持
clear方法
boolean equals(Object o)
equals
在接口
Collection<E>
equals
在
Object
o
- 要与该集合相等的对象
Object.hashCode()
, HashMap
int hashCode()
Object.hashCode()
的一般合同要求 。
hashCode
在接口
Collection<E>
hashCode
在
Object
Object.equals(Object)
,
equals(Object)
default Spliterator<E> spliterator()
Spliterator
。
Spliterator
报告Spliterator.DISTINCT
。 实施应记录其他特征值的报告。
spliterator
在接口
Collection<E>
spliterator
在接口
Iterable<E>
Iterator
创建一个late-binding分割Iterator
。
分割器继承集合迭代器的故障快速属性。
创建的Spliterator
另外报告Spliterator.SIZED
。
Spliterator
另外报告
Spliterator.SUBSIZED
。
Spliterator
在这个集合中的元素