## **一、Collection集合**
在我們初學Java的時候,會學習`int`、`String`、`Array`等這些數據結構,但是在開發中這些數據結構并不能滿足我們開發的需要,比如學過PHP弱數據類型語言的朋友就能知道有一種數據類型是這樣的:
~~~php
data = {
"ZhangSan" => "張三",
"LiSi" => "李四"
}
~~~
我們的`Array`數據類型并不能"包容"它,因為我們`Array`是由下標0開始的一個數組,我們是這樣定義的:
~~~java
String array [] = {"張三","李四"};
for(int i=0; i < array.length; i++){
System.out.println(array[i]);
}
================================ 運行結果 ================================
張三
李四
~~~
所以,我們在程序設計時需要一個能夠類似`key => value`的數據類型,就需要用Collection集合,它幫我們定義了許多特殊的數據類型,我們可以把它稱為集合框架。
>[success] 集合框架(Collection)可以不受我們申明時長度約束,我們申明時也無需告知長度
## **二、Collection的分類**
集合容器主要用于保存對象,其主要分類為三種:`List` `Set` `Map`,其中根據上圖可以看到`List`和`Set`的上級類為`Collection`,而`Map`則是單獨出來的。
1. `List`是有序、可以重復的集合
* 常見的有`ArrayList`、`LinkedList`、`Vector`等,可以把它視為一個實現的接口類
2. `Set`是無序、不可重復
* 常見的有`HashSet`、`TreeSet`、`LinedHashSet`等,可以把它視為一個實現的接口類
3. `Map`是Key-Value的一個映射體
* 常見的有`HashMap`、`TreeMap`等,可以把它視為一個實現的接口類
:-: 
>[danger] Collection接口有兩個主要的子類`List`和`Set`,`Map`不是Collection的子類,他本身是個頂級接口
`ArrayList`繼承關系

`HashMap`繼承關系
