首先我们来看一下API
a:)HashSet的构造函数
public HashSet() {
map = new HashMap<>();
}
我们很轻易的可以看出底层使用HashMap实现的。
b:)我们来看一下add方法
public boolean add(E e) {
return map.put(e,PRESENT)==null;
}
我们可以看到使用map方法的put方法放入的,就是说虽然他是add方法,但是底层是map的put方法。e事我们放进去的对象,另一个是常量对象。
add中的常量对象
private static final Object PRESENT = new Object();
也就是说我们传入的对象作为key值,静态变量当作value,所有value都是一样的。
没有Get方法,我们来看他的iterator方法,返回的是map的key的集合
我们从这可以看出其实要想真正了解HashSet底层,那么我们需要去了解HashMap的底层