HashSet 底层数据结构
HashSet 底层数据结构是HashMap ,无参构造方法会创建一个初始容量为16,加载因子为0.75的HashMap
HashSet源码
public class HashSet extends AbstractSet implements Set, Cloneable,Serializable {
private transient HashMap map;
private static final Object PRESENT = new Object();
public HashSet() {
map = new HashMap();
}
public Iterator iterator() {
return map.keySet().iterator();
}
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
}
HashSet的 add(E e) 方法
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
从源码中可以看出,add(E e)方法中的元素是作为HashMap中的key值, value值是一个Object类型的常量 PRESENT
private static final Object PRESENT = new Object();
HashSet底层的数据结构是一个哈希表,存在HashSet中的元素应该重写其hashCode()方法,故存在HashMap中的key,应该 重写其hashCode()方法。