HashSet源码分析
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;
} 相关推荐
瓜牛呱呱 2020-11-12
柳木木的IT 2020-11-04
yifouhu 2020-11-02
lei0 2020-11-02
源码zanqunet 2020-10-26
码代码的陈同学 2020-10-14
lukezhong 2020-10-14
clh0 2020-09-18
changcongying 2020-09-17
星辰大海的路上 2020-09-13
abfdada 2020-08-26
mzy000 2020-08-24
shenlanse 2020-08-18
zhujiangtaotaise 2020-08-18
xiemanR 2020-08-17