1 集合的概念
集合框架是为表示和操作"多个对象"而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。
实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。
算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。
集合是Java API所提供的一系列类,可以用于动态存放多个对象。--集合只能存对象
jdk1.5开始,集合全部用泛型进行的重写,是一种数据安全的用法。
2 集合的框架结构介绍
Java的集合框架从整体上可以分为两大家族。
Collection(接口)家族。该接口下的所有子孙均存储的是单一对象。
Map(接口)家族。该接口下的所有子孙均存储的是key-value(键值对)形式的数据。
另外还有三个分支,均是为上述两大家族服务的。
Iterator(迭代器)家族。主要用于遍历Colleciton接口的及其子类而设计。
Comparator(比较器), 在集合中存储对象时候,用于对象之间的比较
Collecitons 是工具类。注意该类名带个s,一般就表示工具类。里面提供了N多静态方法,来对Colleciton集合进行操作。
3 集合与数组的对比
数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。
一个数组实例具有固定的大小,不能伸缩。集合则使用初始容量和加载因子根据需要动态改变自己的大小。
集合中不能放基本数据类型,但可以放基本数据类型的包装类。
4 Collection接口
Collection 接口是一组允许重复的对象。 定义了存取对象的方法。
Java不提供直接实现自Collection的类,Java提供的类都是继承自Collection的“子接口”(如:List和Set) 的实现类。
两个非常常用的子接口:
List接口:存放的元素有序且允许有重复的集合接口。
Set接口:存放的元素无序且不允许有重复的集合接口。
所有的重复 都是 靠hashCode()和euqals()两个方法区分的。
4.1 集合对象的创建
接口不能被实例化,所以创建集合对象,只能创建其接口的实现类。
**注意:**jdk1.5开始,Collection 集合都是泛型的。
public interface Collection<E> extends Iterable<E>{
}
所以我们在创建集合的时候就可以指定该集合要存放的类型。如:
Collection<String> c1 = new ArrayList<String>();
Collection<String> c2 = new LinkedList<String>();
Collection<String> c3 = new HashSet<String>();
那么在使用集合方法的时候,参数类型,以及返回值类型,受泛型参数类型的影响。
Collection<String> c1 = new ArrayList<String>();
c1.add("只能添加字符串");//add方法形参使用的是集合的泛型类型,所以这里只能传递字符串
4.2 Collection中常用的方法