模块 java.base
 java.util

类 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 集合框架 的成员。

自从:
1.2
参见:
  • 构造方法详细信息

    • AbstractSet

      protected AbstractSet()
      唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
  • 方法详情

    • 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元素的哈希码定义为零。这确保 s1.equals(s2) 暗示 s1.hashCode()==s2.hashCode() 对于任何两个集合 s1s2,正如 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 - 如果此集合的元素类与指定集合不兼容 (optional)
      NullPointerException - 如果此集合包含空元素并且指定的集合不允许空元素 (optional),或者如果指定的集合为空
      参见: