文章目录
一.参数分析1.map2.PRESENT
二.方法分析1.add2.remove
一.参数分析
1.map
HashSet只是使用该HashMap的key来实现,因为HashMap的key不会重复
private transient HashMap
<E,Object> map
;
2.PRESENT
HashSet不关心value,所以就用这个参数来作为Hashmap的value
private static final Object PRESENT
= new Object();
二.方法分析
1.add
我们看了map的put方法实现应该知道,put对没有key的值会添加,而有的会覆盖。这边直接利用这种方式,关心的只是key
public boolean add(E e
) {
return map
.put(e
, PRESENT
)==null
;
}
2.remove
把map对应的key移除掉
public boolean remove(Object o
) {
return map
.remove(o
)==PRESENT
;
}
这个主要是知道他这个类的想法吧,重点还是HashMap,请参考:HashMap源码阅读