public abstract class AbstractSet
extends AbstractCollection<E>
implements Set<E>
java.lang.Object | ||
↳ | java.util.AbstractCollection<E> | |
↳ | java.util.AbstractSet<E> |
Known Direct Subclasses
ConcurrentSkipListSet<E>,
CopyOnWriteArraySet<E>,
EnumSet<E extends
Enum<E>>,
HashSet<E>,
TreeSet<E>
|
Known Indirect Subclasses |
该类提供了 Set接口的骨架实现,以最大限度地减少实现此接口所需的工作量。
通过扩展此类来实现集合的过程与通过扩展AbstractCollection来实现集合的过程相同,除了此类的所有子类中的所有方法和构造函数都必须遵守 Set接口施加的附加约束(例如,添加方法不得允许将一个对象的多个实例添加到一个集合中)。
请注意,此类不会覆盖AbstractCollection类中的任何实现。 它只是增加了equals和hashCode的实现 。
本课是 Java Collections Framework的成员。
也可以看看:
Protected constructors |
|
---|---|
AbstractSet() 唯一的构造函数。 |
Public methods |
|
---|---|
boolean |
equals(Object o) 将指定的对象与此集合进行相等比较。 |
int |
hashCode() 返回此集合的哈希码值。 |
boolean |
removeAll(Collection<?> c) 从该集合中删除指定集合中包含的所有元素(可选操作)。 |
Inherited methods |
|
---|---|
From class java.util.AbstractCollection
|
|
From class java.lang.Object
|
|
From interface java.util.Collection
|
|
From interface java.util.Set
|
|
From interface java.lang.Iterable
|
boolean equals (Object o)
将指定的对象与此集合进行相等比较。 如果给定对象也是一个集合,则返回true ,这两个集合具有相同的大小,并且给定集合中的每个成员都包含在此集合中。 这确保了equals方法在Set接口的不同实现中正常工作。
这个实现首先检查指定的对象是否是这个集合; 如果是这样,则返回true 。 然后,它检查指定的对象是否与其集合的大小相同; 如果不是,则返回false。 如果是,则返回containsAll((Collection) o) 。
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 removeAll (Collection<?> c)
从该集合中删除指定集合中包含的所有元素(可选操作)。 如果指定的集合也是集合,则此操作会有效地修改此集合,使其值为两个集合的不对称集合差异 。
此实现通过对每个方法调用size方法来确定此集合和指定集合中的哪一个较小。 如果这个集合中的元素数量较少,那么实现将遍历该集合,依次检查迭代器返回的每个元素,以查看它是否包含在指定集合中。 如果包含它,则使用迭代器的remove方法将其从此集中删除。 如果指定集合的元素较少,那么实现迭代指定的集合,使用该集合的remove方法从该集合中除去迭代器返回的每个元素。
注意,此实现将抛出 UnsupportedOperationException如果由 iterator方法返回的迭代器没有实现 remove方法。
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 |
也可以看看: