1)容器的概念:
能够装其他各种各样对象的一个东西,就叫做容器。例如:数组。
不过,数组本身有它的局限性,第一、数组必须存放相同类型的基本数据或对象,第二、数组容量有限,不允许超出定义的长度。第三,改动很不方便,数组确定后如果进行改动,必须再new一个新的数组(详细见数组)
除了数组,JDK还提供了很多容器。而这些容器正好弥补了数组的不足。它们可以存放不同类型的对象,而且可以随时增加和删除,十分灵活。
JDK提供的容器有两种盛放object方式:
1)一个对象一个对象的装到容器里。(下图中实现左边接口的容器)
2)一对一对的装到里面。(下图中实现Map接口的容器)
要想弄懂容器之间的组织关系,就要先清楚容器API的类图结构:
接口定义了容器的方法,实现类实现了接口的方法。实现类有多个,不同的实现类有不同的实现接口的具体方式。
1) Collection接口:定义了存取一组对象的方法。其子接口Set 和List分别定义了存储方式。
2) Set接口:定义了装到容器里的对象没有顺序且不可以重复。
3) List接口:定义了装到容器里的对象有顺序而且可以重复。
4) Map接口:定义了存储“键——值映射对”的方法。
键被当做索引,键值不能重复,也就是两个类equals()不相等。
5) Iterator 接口:定义了iterator()方法,用来遍历容器内部的所有元素。
6) comparable接口:比较对象的大小。所有可以排序的类都实现了comparable接口。
Collection的sort()方法具有排序的作用,是指根据元素的自然顺序对指定列表按升序进行排序。对于基本数据类型,很容易比较大小。调用collectio的sort()方法即可排序。但是,如果比较的是类呢,怎么办,如何对类进行排序? Java.lang.comparable接口提供了comparaTo()方法,只要将要排序的类重写这个方法即可。