HashSet源碼分析

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;
    }
相關文章
相關標籤/搜索