HashSet
分析
HashSet是一个没有重复元素的集合。
它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。
HashSet的父类和实现的接口
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
构造函数
public HashSet() {
map = new HashMap<>();
}
从构造方法可以很轻松的看出,HashSet的底层是一个HashMap,理解了HashMap后,这里没什么可说的。
属性
static final long serialVersionUID = -5024744406713321676L;
private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
看到这里就明白了,和我们前面说的一样,HashSet是用HashMap来保存数据,而主要使用到的就是HashMap的key。
行为
add方法分析
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
利用HashMap的put方法实现add方法
remove方法分析
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
利用HashMap的remove方法实现remove方法