HengYk Blog

个人站

具有浪漫主义情调的理想主义务实青年


JDK1.7的HashSet

参考博文

HashSet 的实现原理

构造方法

从源码可以看出,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方法。