继承与接口关系:
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
成员变量:
private transient HashMap<E,Object> map; // 虚拟的值,对应map中的value private static final Object PRESENT = new Object();
HashSet
底层是基于HashMap实现的。HashSet
里的值对应的是map的key。map的value全部是PRESENT
。
构造方法:
/** * 默认构造器,HashMap实例默认容量16,负载因子0.75 */ public HashSet() { map = new HashMap<>(); } /* * 这个包级别访问权限的构造器只被LinkedHashSet使用 */ HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor); }
add()方法:
public boolean add(E e) { // 用的就是map的方法 @_@ return map.put(e, PRESENT)==null; }
remove()方法:
public boolean remove(Object o) { return map.remove(o)==PRESENT; // 同上 }
contains()方法:
public boolean contains(Object o) { return map.containsKey(o); }
用的都是HashMap
的方法。
如对本文有疑问, 点击进行留言回复!!
springcloud中feign调用处理mybatis-plus Ipage反序列化问题。
Flume 史上最全面的大数据学习第十篇(一) 别再说不知道flume是什么了
网友评论