容器 - HashSet源码学习小结

HashSet源码学习小结

部分源码以下:学习

private transient HashMap<E,Object> map;
    private static final Object PRESENT = new Object();

    public HashSet() {
        map = new HashMap<>();
    }

    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }

    public boolean isEmpty() {
        return map.isEmpty();
    }

由此可知:code

  • HashSet底层是使用HashMap实现的 , 由于 HashMap 的 key 值不可重复;
  • HashMap 在 put 时,若不存在此 key ,则返回null, 若已经存在,则直接返回;因此由 map.put(e, PRESENT)==null 获取是否添加成功;
相关文章
相关标签/搜索