以前就听过,HashSet基于HashMap实现,HashMap的键部分就是一个HashSet,但是今天看了一眼源码之后,我就觉得这些说法并不够清晰,至少没有我看了一眼源码来的痛快。
HashSet源码中的两行代码:
private transient HashMap<E,Object> map;
public HashSet() {
map = new HashMap<E,Object>();
}
这两行代码已经说明了一切,HashSet封装了一个HashMap,然后只关注键的部分。
比如说:HashSet的contains()方法内部调用了HashMap的containsKey()方法
public boolean contains(Object o) {
return map.containsKey(o);
}