一、看下HashSet的构造方法:
private transient HashMap<E,Object> map;
public HashSet() {
map = new HashMap<>();
}
由HashSet的构造方法可知:
1、当我们新建一个HashSet对象的时候,HashSet会帮我们建一个HashMap对象。
二、再看下HashSet添加元素的源码:
private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
由添加元素的源码可知:
1、HashSet添加元素其实就是添加到map里面去了。
2、当我们继续下钻源码就直接进入HashMap的源码中了。
三、总结
由以上源码分析可知,HashSet和HashMap几乎就是一个东西,底层都是key,value的形式,只是HashSet的value值都为空对象而已。