集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);耳集合里只能保存对象(实际上保存的是对象的引用变量,但通常习惯上认为集合里保存的是对象)。
Java 的集合类主要由两个接口派生而出:Collection 和Map,collection 和 Map 是Java 集合框架的跟接口,这两个接口又包含了一些子接口实现类。
图显示了 Collection 体系里的集合。其中粗线圈出的Set 和 List 接口是 Collection 接口派生的两个子接口,它们分别代表了无序集合和有序集合;Queue 是 Java 提供的队列实现,有点类似于List。
下面是Map 体系的继承树,所有的Map 实现类用于保存具有映射关系的数据。
上图显示了Map 接口的众多实现类,这些实现类在功能、用法上存在一定的差异,但它们都有一个功能特征:Map 保存的每项数据都是 key -value 对,也就是由 key 和 value 两个值组成。
我们可以把Java 集合分成三大类,其中 Set 集合类似于一个罐子,把一个对象添加到Set 集合时,Set 集合无法记住添加这个元素的顺序,所以Set 里的元素不能重复(否则系统无法准确识别这个元素);List 集合非常像一个数组,它可以记住每次添加元素的顺序、且 List 的长度可变 。Map 结合也像一个罐子,只是它里面的每一项数据都由两个值组成。
从图中可以看出,如果访问 List 集合中元素,可以直接根据元素的索引来访问;如果访问Map 集合中的元素,可以根据每项元素的 key 来访问其 value;如果访问 Set 集合中的元素,则只能根据元素本身来访问(这也是 Set 集合里元素不允许重复的原因)。