Java容器概括

Collection :   
    |--SubInterface    
        |--Set
            |-- SortSet
                |-- TreeSet
                    內部實際爲TreeMap對象。
                    經過compareTo方法進行比較。
                    比較大的在left,小的在right端。
            |-- HashSet
                內部實爲HashMap或LinkedHashMap,add方法實際是調用map的put
                無重複對象:須要重寫hashCode和equals方法。
                無序
                容許存入null
                不一樣步        
            
        |--List
            |-- ArrayList
                實際內部就是數組
                new ArrayList()時建立一個空數組。add方法時初始化大小,默認值爲10。
                若是存滿了以後,進行擴容,擴容按照公式:原容量+原容量>>1;
                
            |-- LinkList
                 裏面是Node對象first,last。

              add調用的是linkLast方法,若是last爲空,last和first都是這個對象。   java

              add方法以下: 數組

              

final Node<E> l = last;
 final Node<E> newNode = new Node<>(l, e, null);
 last = newNode;
 if (l == null)
   first = newNode;
 else
   l.next = newNode;
 size++;
 modCount++;



       

            |-- Vector
                內部實爲對象數組。調用add方法時初始化大小,默認值爲10。
                存滿了以後,進行擴容,若是傳入擴容數量,則按擴容數量進行擴容,若是沒有傳入,則按原容量進行擴容。
                add方法是同步的。
            
Map
    |--HashMap:AbstractMap的子類
        HashMap中其實是一個一個的Map.Entry的實現類Node對象。即HashMap其實是Node的數組。默認大小爲16個,默認臨界值爲12,
        當HashMap中的元素數超過12的時候,進行擴容,每次進行*2的擴容。
        put方法是非同步的,容許null鍵和null值。        
        put的時候會調用方法的hashCode方法和equals方法進行鍵的比較。
        get方法是非同步的。
        get方法便是調用getNode而後比較對象的hashCode和值(equals)若是存在,返回。
        
        |--LinkedHashMap
        
    |--HashTalbe:Dictionary的子類
        HashTable中實際是一個一個的Map.Entry的實現類Entry對象。即HashTable其實是Entry的數組。默認大小爲11個,默認臨界值爲8.
        當HashTable中的元素數超過8的時候,進行擴容,每次進行*2+1的擴容。臨界值是容量的.75f倍。
        put方法是同步的,不容許null鍵和null值。
        put方法會調用對象的hashCode和equals方法進行鍵的比較。
        get方法是同步的。
        get方法會調用對象的hashCode和equals來比較鍵的值,若是存在,返回。        
    |--SortedMap    

        |--TreeMap spa


上面是本身的一些總結,歡迎大神指正、補充!~ code

相關文章
相關標籤/搜索