## **一、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`等,可以把它视为一个实现的接口类
:-: ![](https://img.kancloud.cn/e7/ab/e7ab3d934c8fa1d96d2c0778adc5ab30_1206x312.png)
>[danger] Collection接口有两个主要的子类`List`和`Set`,`Map`不是Collection的子类,他本身是个顶级接口
`ArrayList`继承关系
![](https://img.kancloud.cn/b1/0d/b10ddc19cbbaa2cab7b338d7b39b3c55_809x438.png)
`HashMap`继承关系
![](https://img.kancloud.cn/f6/87/f6873b6791d2a9bf7a08e4bfe0c174be_1062x640.png)