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