HashSet為無序不可重覆集合。底層幾乎全部藉助HashMap實現,比較簡單。本篇簡要分析一下HashSet源碼。 首先是成員變數: 1、真正保存數據的HashMap實例 2、map實例的值 常用方法: 1、add() 從這個HashSet的add()方法中,可以看出。HashSet的不可重覆,主 ...
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鍵的迭代器。