容器 - 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 獲取是否添加成功;
相關文章
相關標籤/搜索