3. Set详解
简介
本篇主要回顾一下Set的三种主要使用的实现类:HashSet、TreeSet、LinkedHashSet
HashSet
老规矩,先看一下继承结构图

没啥特殊的
构造方法
public HashSet() {
map = new HashMap<>();
}
底层用HashMap,HashMap的key不能重复,所以HashSet元素也不能重复。
添加方法
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
把元素存在了map的key位置,value 为private static final PRESENT = new Object(),都指向同一个object;
移除方法
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
就是map的remove
TreeSet
继承结构图如下

构造方法
public TreeSet() {
this(new TreeMap<E,Object>());
}
底层又是用TreeMap实现的,下一篇必须搞一下Map了。。
接下去的扫了一遍,全靠TreeMap撑场面。
LinkedHashSet
先放图

刚开始看他没什么东西,都是HashSet的玩意儿,那说好的双向链表呢
细看了一下,还是在HashSet中有一个构造方法:
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
用了LinkedHashMap,这就对了,方法就不看了,到Map的时候再说
总结
Set全靠Map撑场面,下次继续搞Map!


浙公网安备 33010602011771号