- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- 参数类型
-
E
- 由此集合维护的元素的类型
- All Implemented Interfaces:
-
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
接口施加的附加约束(例如,添加方法不能允许将一个对象的多个实例添加到集合中)。请注意,此类不会覆盖
AbstractCollection
类中的任何实现。 它只是添加了equals
和hashCode
。这个班是Java Collections Framework的会员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Collection
,AbstractCollection
,Set
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractSet()
唯一的构造函数。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object o)
将指定的对象与此集合进行比较以实现相等。int
hashCode()
返回此集合的哈希码值。boolean
removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。-
Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
-
-
-
方法详细信息
-
equals
public boolean equals(Object o)
将指定的对象与此集合进行比较以实现相等。 如果给定的对象也是一个集合,则返回true
,这两个集合的大小相同,给定集合的每个成员都包含在该集合中。 这可以确保equals
方法在Set
接口的不同实现中正常工作。该实现首先检查指定的对象是否是该集合; 如果是,则返回
true
。 然后,它检查指定的对象是否是与该集合的大小相同的集合; 如果没有,则返回false。 如果是,则返回containsAll((Collection) o)
。- Specified by:
-
equals
在接口Collection<E>
- Specified by:
-
equals
在接口Set<E>
- 重写:
-
equals
在Object
- 参数
-
o
- 要与该集合相等的对象进行比较 - 结果
-
如果指定的对象等于此集合,
true
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此集合的哈希码值。 集合的哈希码被定义为集合中的元素的哈希码的和,其中null
元素的哈希码被定义为零。 这确保s1.equals(s2)
意味着s1.hashCode()==s2.hashCode()
对于任何两套s1
和s2
,根据s2
的一般合同要求 。该实现遍历集合,在
hashCode
中的每个元素上调用hashCode
方法,并将结果相加。- Specified by:
-
hashCode
在接口Collection<E>
- Specified by:
-
hashCode
在接口Set<E>
- 重写:
-
hashCode
在Object
- 结果
- 该集合的哈希码值
- 另请参见:
-
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>
- 重写:
-
removeAll
在AbstractCollection<E>
- 参数
-
c
- 包含要c
集合中删除的元素的集合 - 结果
-
true
如果此设置由于呼叫而更改 - 异常
-
UnsupportedOperationException
- 如果此集合不支持removeAll
操作 -
ClassCastException
- 如果此集合的元素的类与指定的集合不兼容( optional ) -
NullPointerException
- 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空 - 另请参见:
-
AbstractCollection.remove(Object)
,AbstractCollection.contains(Object)
-
-