以前就听过,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);
}
深入解析HashSet的实现原理,发现其底层依赖于HashMap,仅关注键的部分,并通过调用containsKey()方法来实现contains()操作。
3331

被折叠的 条评论
为什么被折叠?



