Java AbstractSet类及实例
Java中的 AbstractSet类 是Java集合框架的一部分,它实现了 集合接口 并扩展了 AbstractCollection类。 它为Set接口提供了一个骨架式的实现。这个类并没有覆盖AbstractCollection类的任何实现,而只是增加了equals()和hashCode()方法的实现。
通过扩展这个类来实现一个集合的过程与通过扩展AbstractCollection来实现一个集合的过程是相同的,只是这个类的子类中的所有方法和构造函数必须服从Set接口所施加的额外约束(例如,add方法不能允许向一个集合中添加多个对象的实例)。

从类的层次结构图中可以得出结论,它实现了 Iterable <E>, Collection <E>, Set<E>接口。它的直接子类是ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, TreeSet。正如我们上面已经讨论过的,AbstractSet是一个抽象类,所以它应该被分配一个子类的实例,比如TreeSet, HashSet, 或者EnumSet。
语法: 声明
public abstract class AbstractSet<E>
extends AbstractCollection<E>
implements Set<E>
其中 E 是这个Set所维护的元素的类型。
AbstractSet类的构造函数
1. protected AbstractSet():默认的构造函数,但是由于被保护,它不允许创建一个AbstractSet对象。
AbstractSet<E> as = new TreeSet<E>();
抽象集的方法
| 方法 | 描述 |
|---|---|
| equals(Object o) | 将指定的对象与这个集合进行比较,看是否相等。 |
| hashCode() | 返回这个集合的哈希代码值。 |
| removeAll(Collection> c) | 从这个集合中移除其包含在指定集合中的所有元素(可选操作)。
**例1** : **输出** **例2** : **输出**  下面定义了一些其他的类或接口的方法,在某种程度上帮助我们更好地理解AbstractSet类,如下。 ### java.util.AbstractCollection类中声明的方法 方法 | 描述 |
如果这个集合包含了指定集合中的所有元素,返回true。 |
| isEmpty() | 如果这个集合不包含任何元素,则返回真。 |
| iterator() | 返回这个集合中所包含的元素的迭代器。 |
| remove(Object o) | 从这个集合中删除一个指定元素的单个实例,如果它存在的话(可选操作)。 |
| retainAll(Collection> c) | 只保留这个集合中包含在指定集合中的元素(可选操作)。 toArray() | 返回一个包含此集合中所有元素的数组。 toArray(T[] a) | 返回一个包含此集合中所有元素的数组;返回的数组的运行时类型是指定数组的类型。 toString() | 返回这个集合的字符串表示。 ### 在java.util.Collection 接口中声明的方法 方法 | 描述 ### java.lang.Iterable接口中声明的方法 方法 | 描述 ### 在接口java.util.Set中声明的方法 方法 | 描述 |
如果这个集合包含指定集合的所有元素,则返回true。 |
| isEmpty() | 如果这个集合不包含任何元素,则返回真。 |
| 迭代器() | 返回这个集合中的元素的一个迭代器。 |
| remove(Object o) | 如果指定的元素存在,从这个集合中删除(可选操作)。 |
| retainAll(Collection<?> c) | 只保留这个集合中包含在指定集合中的元素(可选操作)。 |
| size() | 返回这个集合中元素的数量(它的cardinality)。 |
| spliterator() | 在这个集合中的元素上创建一个Spliterator。 |
| toArray() | 返回一个包含这个集合中所有元素的数组。 |
| toArray(T[] a) | 返回一个包含这个集合中所有元素的数组;返回的数组的运行时类型是指定数组的类型。 |
极客教程