hashSet內部是利用hashMap實現的,將值存在hashmap的key上這也是爲何hashset不容許存取重複值得緣由。數據結構
數據結構函數
private transient HashMap<E,Object> map; // 與支持映射中的對象關聯的虛擬值 ,map中的value,只是一個無心義的空對象 private static final Object PRESENT = new Object();
默認的構造函數code
public HashSet() { map = new HashMap<>(); }
查詢內容的時候實際是在map中查詢key對象
public boolean contains(Object o) { return map.containsKey(o); }
增長的時候,在key的位置放置要存的值,在value中放置一個沒有意義的空對象hash
public boolean add(E e) { return map.put(e, PRESENT)==null; }