一、属性
1.1 map
HashSet的底层存储方式是HashMap
private transient HashMap<E,Object> map;
1.2 PRESENT
因为HashMap中需要键值对来进行存储而HashSet只存储单个变量,因此创建一个没有意义的变量来配合HashSet的变量来进行存储
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
二、方法
2.1 add
如果set中不存在e2使得:e= =null?e2= =null:e.equals(e2),那么向set中添加e,如果已经存在这样的e2,那么set不变,返回false
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}