hashSet内部是利用hashMap实现的,将值存在hashmap的key上这也是为什么hashset不允许存取重复值得原因。
数据结构
private transient HashMap<E,Object> map;
// 与支持映射中的对象关联的虚拟值 ,map中的value,只是一个无意义的空对象
private static final Object PRESENT = new Object();
默认的构造函数
public HashSet() {
map = new HashMap<>();
}
查询内容的时候实际是在map中查询key
public boolean contains(Object o) {
return map.containsKey(o);
}
增加的时候,在key的位置放置要存的值,在value中放置一个没有意义的空对象
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。