AbstractSet
java.lang.Object
|—java.util.AbstractCollection<E&
|—|—java.util.AbstractSet<E&
public abstract class AbstractSet<E>
extends AbstractCollection<E>
implements Set<E>
此类提供 Set 接口的骨架实现,以最大限度地减少实现此接口所需的工作量。
通过扩展此类实现集合的过程与通过扩展 AbstractCollection 实现集合的过程相同,只是该类的子类中的所有方法和构造函数都必须遵守 Set 接口施加的附加约束(例如, add 方法不得允许将对象的多个实例添加到集合中)。
请注意,此类不会覆盖 AbstractCollection 类的任何实现。 它只是添加了 equals 和 hashCode 的实现。
此类是 Java 集合框架的成员。
构造函数摘要
修饰符 | 构造函数 | 描述 |
---|---|---|
protected | AbstractSet() | 唯一的构造函数。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
boolean | equals(Object o) | 比较指定对象与此集合是否相等。 |
int | hashCode() | 返回此集合的哈希码值。 |
boolean | removeAll(Collection<?> c) | 从此集合中删除指定集合中包含的所有元素(可选操作)。 |
从类 java.util.AbstractCollection 继承的方法 |
---|
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString |
从接口 java.util.Collection 继承的方法 |
---|
parallelStream, removeIf, stream |
从接口 java.lang.Iterable 继承的方法 |
---|
forEach |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.util.Set 继承的方法 |
---|
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray |
构造函数详细信息
AbstractSet
protected AbstractSet()
唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
方法详情
equals
public boolean equals(Object o)
比较指定对象与此集合是否相等。 如果给定对象也是一个集合,则返回 true,这两个集合具有相同的大小,并且给定集合的每个成员都包含在该集合中。 这确保了 equals 方法在 Set 接口的不同实现中正常工作。
这个实现首先检查指定的对象是否是这个集合; 如果是,则返回 true。 然后,它检查指定的对象是否是一个集合,其大小与该集合的大小相同; 如果不是,则返回 false。 如果是,则返回 containsAll((Collection) o)。
指定者:
接口 CollectionE 中的等于
指定者:
接口 SetE 中的等于
覆盖:
类 Object 中的等于
参数:
参数名称 | 参数描述 |
---|---|
o | 要与此集合比较是否相等的对象 |
返回:
如果指定的对象等于此集合,则为 true
hashCode
public int hashCode()
返回此集合的哈希码值。 集合的哈希码定义为集合中元素的哈希码之和,其中空元素的哈希码定义为零。 这确保了 s1.equals(s2) 意味着任何两个集合 s1 和 s2 的 s1.hashCode()==s2.hashCode(),这是 Object#hashCode 的一般合同所要求的。
此实现对集合进行迭代,对集合中的每个元素调用 hashCode 方法,并将结果相加。
指定者:
接口 CollectionE 中的 hashCode
指定者:
接口 SetE 中的 hashCode
覆盖:
类 Object 中的 hashCode
返回:
此集合的哈希码值
removeAll
public boolean removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。如果指定的集合也是一个集合,这个操作有效地修改了这个集合,使得它的值是两个集合的不对称集合差。
此实现通过在每个集合上调用 size 方法来确定该集合和指定集合中的较小者。如果这个集合的元素较少,则实现迭代这个集合,依次检查迭代器返回的每个元素,看它是否包含在指定的集合中。如果它如此包含,则使用迭代器的 remove 方法将其从该集合中删除。如果指定集合的元素较少,则实现迭代指定集合,使用此集合的 remove 方法从此集合中删除迭代器返回的每个元素。
请注意,如果迭代器方法返回的迭代器未实现 remove 方法,则此实现将抛出 UnsupportedOperationException。
指定者:
接口 CollectionE 中的 removeAll
指定者:
接口 SetE 中的 removeAll
覆盖:
类 AbstractCollectionE 中的 removeAll
参数:
参数名称 | 参数描述 |
---|---|
c | 包含要从此集合中删除的元素的集合 |
返回:
如果此集合因调用而更改,则为 true
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此 set 不支持 removeAll 操作 |
ClassCastException | 如果此集合的元素的类与指定的集合不兼容(可选) |
NullPointerException | 如果此集合包含空元素并且指定的集合不允许空元素(可选),或者指定的集合为空 |