参考博文
构造方法
从源码可以看出,HashSet底层通过HashMap实现。
private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
    public HashSet() {
        map = new HashMap<>();
    }
    public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor);
    }
add方法
    public boolean add(E e) {
        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);
    }
说明
HashSet中保存的对象,请注意重写其equals和hashCode方法。

