E
- 由此集合维护的元素的类型
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
通过扩展此类实现集合的过程与通过扩展AbstractCollection实现集合的过程相同,除了此类的子类中的所有方法和构造函数必须遵守Set接口施加的附加约束(例如,添加方法不能允许将一个对象的多个实例添加到集合中)。
请注意,此类不会覆盖AbstractCollection类中的任何实现。 它只是添加了equals和hashCode的实现 。
Collection
, AbstractCollection
, Set
Modifier | Constructor and Description |
---|---|
protected |
AbstractSet()
唯一的构造函数。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o)
将指定的对象与此集合进行比较以实现相等。
|
int |
hashCode()
返回此集合的哈希码值。
|
boolean |
removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。
|
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
parallelStream, removeIf, stream
public boolean equals(Object o)
该实现首先检查指定的对象是否是该集合; 如果是,则返回true 。 然后,它检查指定的对象是否是与该集合的大小相同的集合; 如果没有,则返回false。 如果是,则返回containsAll((Collection) o) 。
equals
在接口
Collection<E>
equals
在界面
Set<E>
equals
在类
Object
o
- 要与此集合相等的对象进行比较
Object.hashCode()
, HashMap
public int hashCode()
Object.hashCode()
的一般合同的要求 。
该实现遍历集合,在集合中的每个元素上调用hashCode方法,并将结果相加。
hashCode
在界面
Collection<E>
hashCode
在界面
Set<E>
hashCode
在
Object
Object.equals(Object)
,
Set.equals(Object)
public boolean removeAll(Collection<?> c)
该实现通过在每个集合上调用size方法来确定哪个是该集合和指定集合中的哪一个。 如果此集合具有较少的元素,则实现将遍历该集合,依次检查迭代器返回的每个元素,以查看它是否包含在指定的集合中。 如果它是如此包含,它将使用迭代器的remove方法从该集合中删除。 如果指定的集合具有较少的元素,则实现将遍历指定的集合,从该集合中删除迭代器返回的每个元素,使用该集合的remove方法。
注意,此实现将抛出UnsupportedOperationException如果由iterator方法返回的迭代器没有实现remove方法。
removeAll
在界面
Collection<E>
removeAll
中的
Set<E>
removeAll
在类别
AbstractCollection<E>
c
- 包含要从此集合中删除的元素的集合
UnsupportedOperationException
-如果
removeAll操作不受此组支持
ClassCastException
- 如果此集合的元素的类与指定的集合不兼容(
optional )
NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素(
optional ),或者如果指定的集合为空
AbstractCollection.remove(Object)
,
AbstractCollection.contains(Object)