JDK源碼學習(6)-java.util.HashSet & java.util.LinkedHashSet & java.util.TreeSet

第一部分:java.util.HashSet

該類型主要是依賴於HashMap,即HashSet的元素爲HashMap的key,而HashMap的value爲一個常量Object對象代替。

具體代碼如下:

     public HashSet() {
        map = new HashMap<>();
    }
     public int size() {
        return map.size();
    }

     public boolean isEmpty() {
        return map.isEmpty();
    }

    public boolean contains(Object o) {
        return map.containsKey(o);
    }

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

    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }

   
    public void clear() {
        map.clear();
    }

即HashSet的基本操作都是HashMap關於key的基本操作。因此,HashSet的節點會直接去重。

第二部分:java.util.LinkedHashSet

LinkedHashSet依賴於LinkedHashMap,即key在衝突時存放的數據結構爲雙向鏈表,並且會將新進行插入操作的key存放到鏈表末尾位置,實現最近操作在最容易找到的位置。

同樣的,java.util.TreeSet也是依賴於TreeMap的相關實現。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章