原始碼分析–HashSet(JDK1.8)

陽光、大地和詩歌發表於2019-01-21

  HashSet為無序不可重複集合。底層幾乎全部藉助HashMap實現,比較簡單。本篇簡要分析一下HashSet原始碼。

 

首先是成員變數:

  1、真正儲存資料的HashMap例項

private transient HashMap<E,Object> map;

  2、map例項的值

private static final Object PRESENT = new Object();

 

常用方法:

  1、add()

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

  從這個HashSet的add()方法中,可以看出。HashSet的不可重複,主要就是利用Map相同鍵會進行值覆蓋的特性完成的。

 

  2、迭代方法

public Iterator<E> iterator() {
        return map.keySet().iterator();
    }

  直接就是返回Map鍵的迭代器。

相關文章