今天有人突然问我这样一个问题
问:HashSet的底层的底层是什么?
答:HashSet的底层当然是HashMap呀
问:你确定吗?map需要key、value两个值,但是set可是只需存放一个值
哎呀!猛的一听好像是这么回事呀。
但仔细一想自己不可能记错呀,源码都看过了,确实是map呀,那set是怎么把值存到map中的呢?
我们来看下面的源码,这是set的add方法,我们可以看到,这里把值放到了放到了map的key上面,而value是一个常量值
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
value是一个Object对象
private static final Object PRESENT = new Object();