1. 程式人生 > >為什麼Set會去重

為什麼Set會去重

Set之所以會去重,和map有很大的關係。
看原始碼你會發現HashSet底層使用HashMap儲存
TreeSet底層使用TreeMap儲存
LinkedHashSet底層使用LinkedHashMap儲存

拿HashSet為例子,我們檢視add()方法的原始碼

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

return的map物件其實是 一個HashMap

  private transient HashMap<E,Object> map;

再看map.put(e, PRESENT)
被傳進來的泛型物件當成了Map的鍵,因為Map鍵值重複的話新的鍵會覆蓋舊的鍵值,所以Set不會重複。