### 简介
在Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。很显然,Java的数组可以看作是一种集合。
```java
String[] ss = new String[10]; //可持有10个String对象
ss[0] = "Hello"; //可放入String对象
String first = ss[0]; //可获取某个位置的String对象
```
既然Java提供了数组这种数据类型,可以充当集合,那么,我们为什么还需要其他集合类?这是因为数组有如下限制:
- 数组初始化后大小不可变;
- 数组只能按索引顺序存取。
我们需要各种不同类型的集合类来处理不同的数据。
- 可变大小的顺序链表
- 保证无重复元素的集合
- ...
### Collection
Java标准库自带的`java.util`包提供了集合类:`Collection`,它是除`Map`外所有其他集合类的根接口。Java的`java.util`包主要提供了以下三种类型的集合:
- `List`:一种有序列表的集合,例如,按索引排列的`Student`的`List`;
- `Set`:一种保证没有重复元素的集合,例如,所有无重复名称的`Student`的`Set`;
- `Map`:一种通过键值(key-value)查找的映射表集合,例如,根据`Student`的`name`查找对应`Student`的`Map`。