一、集合框架的由来
我们经常使用数组来操作一组相同类型的数据,而数组有一个重要的缺陷,就是长度固定不变,那么集合框架的出现就是为了弥补数组的缺陷。集合可以动态扩展容量,而且可以存储不同类型的数据。
既然要操作这些数据,就会引出如何组织和存储这些数据的问题——即数据结构,集合框架实际上就是java针对于数据结构的一种实现。在实际开发中,程序员不必考虑数据结构的实现过程,只需要使用这些类创建对象,即可直接使用,大大提高了编程效率。
二、集合框架的组成
Java集合框架包含三种类型的集合:规则集(set)、线性表(list)、图(map) ;它们分别定义在接口Set、List、Map中。
- Set的实例存储一组互不相同的元素
- list的实例存储一组顺序排列的元素
- Map的实例存储一组对象,每个对象都有一个关联的键值
集合框架图
1)在Java集合框架中定义的所有接口和类都存储在包java.util中
2)Java集合框架的设计是使用接口、抽象类和具体类的一个好例子。
- 用接口定义框架
- 用抽象类提供接口的一部分实现
- 具体类通过具体的数据结构实现整个接口
3)Java集合框架中所有具体类都实现了Cloneable和Serializable接口,所以它们的实例都是可复制和可序列化的。
三、Collection接口和Map接口
在集合框架的类继承体系当中,最顶层有两个接口
- Collection表示一组纯数据
- Map表示一组key-value对
Collection接口每次只能对单个对象进行处理,是单个集合保存的最大父接口;Map是一个映射接口,一次性保存两个对象,且这两个对象是key-value结构,这种结构最大的特点是可以通过key找到value内容。
3.1 Collection接口
Collection接口定义:
public interface Collection<E> extends Iterable<E>
注:此处泛型的应用,直接好处就是可以避免ClassCastException,原因是里面所有数据的保存类型都是相同的。
Collection接口继承关系:
Collection接口常用方法:
1)add()方法和iterator()方法最常用,子接口都有这两个方法。
2)一般很少直接使用Collection接口,它只是一个存储数据的标准,并不能区分存储类型,使用它的子接口,比如List(允许元素重复)、Set(不允许数据重复),即可区分具体存储类型。
3.2 Map接口
map接口定义:
public interface Map<K,V>
map接口继承关系:
Map接口常用方法: