Module  java.base
软件包  java.util

Class AbstractSet<E>

  • 参数类型
    E - 由此集合维护的元素的类型
    All Implemented Interfaces:
    Iterable<E>Collection<E>Set<E>
    已知直接子类:
    ConcurrentSkipListSetCopyOnWriteArraySetEnumSetHashSetTreeSet


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

    通过扩展此类实现集合的过程与通过扩展AbstractCollection实现集合的过程相同,除了此类的子类中的所有方法和构造函数都必须遵守由Set接口施加的附加约束(例如,添加方法不能允许将一个对象的多个实例添加到集合中)。

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

    这个班是Java Collections Framework的会员。

    从以下版本开始:
    1.2
    另请参见:
    CollectionAbstractCollectionSet
    • 构造方法详细信息

      • AbstractSet

        protected AbstractSet​()
        唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
    • 方法详细信息

      • equals

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

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

        Specified by:
        equals在接口 Collection<E>
        Specified by:
        equals在接口 Set<E>
        重写:
        equalsObject
        参数
        o - 要与该集合相等的对象进行比较
        结果
        如果指定的对象等于此集合, true
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()
        返回此集合的哈希码值。 集合的哈希码被定义为集合中的元素的哈希码的和,其中null元素的哈希码被定义为零。 这确保s1.equals(s2)意味着s1.hashCode()==s2.hashCode()对于任何两套s1s2 ,根据s2的一般合同要求

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

        Specified by:
        hashCode在接口 Collection<E>
        Specified by:
        hashCode在接口 Set<E>
        重写:
        hashCodeObject
        结果
        该集合的哈希码值
        另请参见:
        Object.equals(Object)Set.equals(Object)
      • removeAll

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

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

        注意,此实现将抛出UnsupportedOperationException如果返回的迭代器iterator方法没有实现remove方法。

        Specified by:
        removeAll在接口 Collection<E>
        Specified by:
        removeAll在接口 Set<E>
        重写:
        removeAllAbstractCollection<E>
        参数
        c - 包含要 c集合中删除的元素的集合
        结果
        true如果此设置由于呼叫而更改
        异常
        UnsupportedOperationException - 如果此集合不支持 removeAll操作
        ClassCastException - 如果此集合的元素的类与指定的集合不兼容( optional
        NullPointerException - 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
        另请参见:
        AbstractCollection.remove(Object)AbstractCollection.contains(Object)