一、概述
是一个不含重复元素、无序的集合类。作用为提供无序的Set集合。
继承AbstractSet,实现了Set、Cloneable、Serializable接口。
Set
Set是不含重复元素的集合类。
继承Collection,未添加API。
AbstractSet
继承自AbstractCollection,实现Set接口。
实现了equal、hashcode、remove函数接口,减少Set实现类的重复编码。
子类仅需实现iterator()和size()方法,add()方法默认不支持
二、特点
- 不含重复元素
- 无序
- 非线程安全
- iterator是fail-fast的
三、数据结构
依赖HashMap,使用HashMap<E, HashSet<E>>存储数据。
transient HashMap<E, HashSet<E>> backingMap;
四、实现要点
1. 基本方法
添加
@Override
public boolean add(E object) {
return backingMap.put(object, this) == null;
}
删除
仅支持通过Iterator删除
2. 访问方法
提供一种访问方式:Iterator
Iterator(exquisitely)
返回HashMap的keySet的Iterator
@Override
public Iterator<E> iterator() {
return backingMap.keySet().iterator();
}