Module java.base
Package java.util

Class AbstractSet<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
类型参数:
E - 此集合中维护的元素类型
所有实现的接口:
Iterable<E>, Collection<E>, Set<E>
直接已知的子类:
ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, TreeSet

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
此类提供了 Set 接口的骨架实现,以最小化实现此接口所需的工作量。

通过扩展此类来实现集合的过程与通过扩展 AbstractCollection 来实现集合的过程相同,只是此类的子类中的所有方法和构造函数必须遵守 Set 接口施加的额外约束(例如,add 方法不得允许将对象的多个实例添加到集合中)。

请注意,此类不会覆盖 AbstractCollection 类中的任何实现。它仅为 equalshashCode 添加了实现。

此类是 Java 集合框架 的成员。

自 JDK 版本:
1.2
另请参见:
  • Constructor Details

    • AbstractSet

      protected AbstractSet()
      唯一构造函数。(通常由子类构造函数隐式调用。)
  • Method Details

    • equals

      public boolean equals(Object o)
      将指定的对象与此集合进行比较以判断是否相等。如果给定对象也是一个集合,并且两个集合具有相同的大小,并且给定集合的每个成员都包含在此集合中,则返回 true。这确保了 equals 方法在 Set 接口的不同实现之间正常工作。

      此实现首先检查指定的对象是否为此集合;如果是,则返回 true。然后,它检查指定的对象是否是一个大小与此集合的大小相同的集合;如果不是,则返回 false。如果是,则返回 containsAll((Collection) o)

      指定者:
      equals 在接口 Collection<E>
      指定者:
      equals 在接口 Set<E>
      覆盖:
      equals 在类 Object
      参数:
      o - 用于与此集合比较相等性的对象
      返回:
      如果指定的对象等于此集合,则返回 true
      另请参见:
    • hashCode

      public int hashCode()
      返回此集合的哈希码值。集合的哈希码定义为集合中元素的哈希码之和,其中 null 元素的哈希码定义为零。这确保了对于任意两个集合 s1s2,如果 s1.equals(s2)s1.hashCode()==s2.hashCode(),符合 Object.hashCode() 的一般契约。

      此实现遍历集合,对集合中的每个元素调用 hashCode 方法,并将结果相加。

      指定者:
      hashCode 在接口 Collection<E>
      指定者:
      hashCode 在接口 Set<E>
      覆盖:
      hashCode 在类 Object
      返回:
      此集合的哈希码值
      另请参见:
    • removeAll

      public boolean removeAll(Collection<?> c)
      从此集合中移除包含在指定集合中的所有元素(可选操作)。如果指定的集合也是一个集合,则此操作有效地修改此集合,使其值为两个集合的 非对称集合差

      此实现通过在每个集合上调用 size 方法来确定此集合和指定集合中哪个更小。如果此集合的元素较少,则实现将遍历此集合,依次检查迭代器返回的每个元素是否包含在指定集合中。如果包含,则使用迭代器的 remove 方法从此集合中移除。如果指定的集合的元素较少,则实现将遍历指定的集合,使用此集合的 remove 方法从此集合中移除每个迭代器返回的元素。

      请注意,如果由 iterator 方法返回的迭代器未实现 remove 方法,则此实现将抛出 UnsupportedOperationException

      指定者:
      removeAll 在接口 Collection<E>
      指定者:
      removeAll 在接口 Set<E>
      覆盖:
      removeAll 在类 AbstractCollection<E>
      参数:
      c - 包含要从此集合中移除的元素的集合
      返回:
      如果调用导致此集合发生更改,则返回 true
      抛出:
      UnsupportedOperationException - 如果此集合不支持 removeAll 操作
      ClassCastException - 如果此集合的元素的类与指定集合不兼容(可选
      NullPointerException - 如果此集合包含空元素且指定集合不允许空元素(可选),或者指定集合为 null
      另请参见: