Set接口
所在包:java.util.Set<E>
参数类型:E
- 由此集合维护的元素的类型
All Superinterfaces:Collection <E>, Iterable <E>
All Known Subinterfaces:NavigableSet <E>, SortedSet <E>
所有已知实现类:
AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateReasons , LinkedHashSet , TreeSet
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 。
从以下版本开始:1.2
另请参见: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)
返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。
|
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
Methods inherited from interface java.lang.Iterable
方法详细信息
-
size
int size()
返回此集合中的元素数(其基数)。 如果此集合包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE 。- Specified by:
size
在接口Collection<E>
- 结果
- 该集合中的元素数(其基数)
-
isEmpty
boolean isEmpty()
如果此集合不包含元素,则返回 true 。- Specified by:
isEmpty
中的Collection<E>
- 结果
- true如果这个集合不包含元素
-
contains
boolean contains(Object o)
如果此集合包含指定的元素,则返回true 。 更正式地,返回true当且仅当该集合包含元素e使得(o==null ? e==null : o.equals(e)) 。- Specified by:
contains
在界面Collection<E>
- 参数
o
- 要在此集合中存在的元素将被测试- 结果
- true如果此集合包含指定的元素
- 异常
ClassCastException
- 如果指定元素的类型与此集不兼容( optional )NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素( optional )
-
toArray
Object[] toArray()
返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个数组是由数组支持的)。 因此,调用者可以自由地修改返回的数组。
此方法充当基于阵列和基于集合的API之间的桥梁。
- Specified by:
toArray
在接口Collection<E>
- 结果
- 一个包含此集合中所有元素的数组
-
toArray
<T> T[] toArray(T[] a)
返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。如果这个集合适合指定的数组,有空余的空间(即,该数组的元素多于此集合),紧随集合结束后的数组中的元素设置为null 。 (这仅在调用者知道此集合不包含任何空元素时才可用于确定此集合的长度。)
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
像
toArray()
方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。假设x是一个已知只包含字符串的集合。 下面的代码可用于所述一组转储到的String一个新分配的阵列:
String[] y = x.toArray(new String[0]);
请注意, toArray(new Object[0])的功能与toArray()相同 。- Specified by:
toArray
在接口Collection<E>
- 参数类型
T
- 包含集合的数组的运行时类型- 参数
a
- 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。- 结果
- 一个包含此集合中所有元素的数组
- 异常
ArrayStoreException
- 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型NullPointerException
- 如果指定的数组为空
-
add
boolean add(E e)
如果指定的元素不存在,则将其指定的元素添加(可选操作)。 更正式地,将指定的元素e添加到该集合,如果集合不包含元素e2 ,使得(e==null ? e2==null : e.equals(e2)) 。 如果该集合已经包含该元素,则该呼叫将保持不变,并返回false 。 结合对构造函数的限制,这样可以确保集合不会包含重复的元素。上述规定并不意味着集合必须接受所有要素; 套可以拒绝增加任何特定元件,包括null,并且抛出异常,作为用于本说明书中描述
Collection.add
。 单个集合实现应清楚地记录对它们可能包含的元素的任何限制。- Specified by:
add
在界面Collection<E>
- 参数
e
- 要添加到此集合的元素- 结果
- true如果此集合尚未包含指定的元素
- 异常
UnsupportedOperationException
-如果 add操作不受此组支持ClassCastException
- 如果指定元素的类阻止将其添加到此集合NullPointerException
- 如果指定的元素为空,并且此集合不允许空元素IllegalArgumentException
- 如果指定元素的某些属性阻止将其添加到此集合
-
remove
boolean remove(Object o)
如果存在,则从该集合中删除指定的元素(可选操作)。 更正式地,删除一个元素e这样的(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样一个元素。 返回true如果这个集合包含元素(或等效地,如果该集合由于调用而更改)。 (一旦调用返回,此集合将不包含该元素。)- Specified by:
remove
在界面Collection<E>
- 参数
o
- 要从此集合中删除的对象(如果存在)- 结果
- true如果这个集合包含指定的元素
- 异常
ClassCastException
- 如果指定元素的类型与此集不兼容( optional )NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素( optional )UnsupportedOperationException
- 如果该 集合不支持remove操作
-
containsAll
boolean containsAll(Collection<?> c)
返回true如果此集合包含所有指定集合的元素。 如果指定的集合也是一个集合,如果它是该集合的子集 ,则此方法返回true 。- Specified by:
containsAll
在接口Collection<E>
- 参数
c
- 要在此集合中检查收集的集合- 结果
- true如果此集合包含指定集合的所有元素
- 异常
ClassCastException
- 如果指定集合中的一个或多个元素的类型与此集合不兼容( optional )NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素( optional ),或者如果指定的集合为空- 另请参见:
contains(Object)
-
addAll
boolean addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(如果尚未存在)(可选操作)。 如果指定集合也是一个set,这样其值是两个集合的并集的addAll操作实际修改此设置。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。- Specified by:
addAll
在接口Collection<E>
- 参数
c
- 包含要添加到此集合的元素的集合- 结果
- true如果此设置由于呼叫而更改
- 异常
UnsupportedOperationException
-如果 addAll操作不受此组支持ClassCastException
- 如果指定集合的元素的类阻止将其添加到此集合NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素,或者如果指定的集合为空IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此集合- 另请参见:
add(Object)
-
retainAll
boolean retainAll(Collection<?> c)
仅保留该集合中包含在指定集合中的元素(可选操作)。 换句话说,从这个集合中删除它不包含在指定集合中的所有元素。 如果指定的集合也是一个集合,则此操作有效地修改该集合,使其值是两组的交集 。- Specified by:
retainAll
在界面Collection<E>
- 参数
c
- 包含要保留在此集合中的元素的集合- 结果
- true如果此设置由于呼叫而更改
- 异常
UnsupportedOperationException
-如果 retainAll操作不受此组支持ClassCastException
- 如果此集合的元素的类与指定的集合不兼容( optional )NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空- 另请参见:
remove(Object)
-
removeAll
boolean removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。 如果指定的集合也是集合,则该操作有效地修改该集合,使其值是两组的非对称集合差异 。- Specified by:
removeAll
在接口Collection<E>
- 参数
c
- 包含要从此集合中删除的元素的集合- 结果
- true如果此设置由于呼叫而更改
- 异常
UnsupportedOperationException
-如果 removeAll操作不受此组支持ClassCastException
- 如果此集合的元素的类与指定的集合不兼容( optional )NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空- 另请参见:
remove(Object)
,contains(Object)
-
clear
void clear()
从此集合中删除所有元素(可选操作)。 此呼叫返回后,该组将为空。- Specified by:
clear
在界面Collection<E>
- 异常
UnsupportedOperationException
- 如果此集合不支持 clear方法
-
equals
boolean equals(Object o)
将指定的对象与此集合进行比较以实现相等。 如果指定的对象也是一个集合,则返回true ,两个集合的大小相同,并且该集合中的每个成员都包含在该集合中(或者等效地,该集合的每个成员都包含在指定的集合中)。 此定义可确保equals方法在集合接口的不同实现之间正常工作。- Specified by:
equals
在接口Collection<E>
- 重写:
equals
在Object
- 参数
o
- 要与该集合相等的对象- 结果
- true如果指定的对象等于此集合
- 另请参见:
Object.hashCode()
,HashMap
-
hashCode
int hashCode()
返回此集合的哈希码值。 集合的哈希码被定义为集合中的元素的哈希码的和,其中null元素的哈希码被定义为零。 这确保了s1.equals(s2)意味着s1.hashCode()==s2.hashCode()对于任何两套s1和s2 ,根据Object.hashCode()的一般合同要求 。- Specified by:
hashCode
在接口Collection<E>
- 重写:
hashCode
在Object
- 结果
- 该集合的哈希码值
- 另请参见:
Object.equals(Object)
,equals(Object)
-
spliterator
default Spliterator<E> spliterator()
在此集合中的元素上创建一个Spliterator
。Spliterator
报告Spliterator.DISTINCT
。 实施应记录其他特征值的报告。- Specified by:
spliterator
在接口Collection<E>
- Specified by:
spliterator
在接口Iterable<E>
- 实现要求:
- 默认实现从集合的
Iterator
创建一个late-binding分割Iterator
。 分割器继承集合迭代器的故障快速属性。创建的
Spliterator
另外报告Spliterator.SIZED
。 - Implementation Note:
- 创建的
Spliterator
另外报告Spliterator.SUBSIZED
。 - 结果
- 一个
Spliterator
在这个集合中的元素 - 从以下版本开始:
- 1.8