黑马程序员-Java基础,Java集合概述

============ ASP.Net+Android+IOS开发.Net培训、期待与您交流! ============

为了保存数量不确定的数据,以及保存具有映射关系的数据(关联数组),Java提供集合类。集合类主要负责盛装,保存其他数据,因此集合类也被称为容器类。所有集合类都位于java.lang包下。

集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(对象的引用变量);而集合里只能保存对象(对象的引用变量)。

Java的集合类主要有两个接口派生而出:CollectionMap,两者是Java集合框架的根接口,这两个接口有包含了几个根接口或者实现类。下图为Collection接口、子接口、实现类的继承树:

 

上图显示了Collection体系里的集合,其中粗线圈出的SetList接口是Collection接口派生的两个子接口,它们分别代表了无序集合和有序集合;QueueJava提供的队列实现,有点类似与List

下图是Map体系的继承树,所有的Map实现类用于保存具有映射关系的数据(关联数组)。

 

上图显示了Map接口的众多实现类,这些实现类在功能、用法上存在一定的差异,但它们都有一个功能特征:Map保存的每项数据都是key-value对,也就是由keyvalue两个值组成,例如成绩单:语文-97,数学-99等,每项数据都是有两个值组成:科目名和成绩。对于成绩表而言,科目通常不会重复,而成绩是可重复的,通常会根据科目来查询成绩,而不会用成绩来查询科目。Map也与此类次,Map里的key不可重复,key用于标识集合里每项数据,如需查阅Map集合里的数据,总是通过Mapkey来获取。

根据以上两个粗线条标识的3个接口,我们可以把Java的所有集合分为三大类,其中Set集合类似与一个罐子,把一个对象添加到一个集合Set集合时,Set集合无法记住添加这个元素的顺序,所以Set集合里的元素不可重复(否则系统无法准确标识这个元素);List集合非常像一个数组,它可以记住每次添加元素的顺序,只是List的长度可变。Map集合也像一个罐子,只是它里面的每项数据都是有两个值组成。下图显示了三个集合的示意图:

 

从图中可以看出,如果需要访问List集合中的元素可以直接根据元素的啊索引来获取;如果需要访问Map集合中的元素,则可以根据每项元素的key来获取value;如果需要访问Set集合中的元素,则只能根据元素本身来访问。

对于SetListMap三种集合,最常用的实现类在前两个图中以灰色区域覆盖,分别是HashSetArrayListHashMap三个实现类。

============ASP.Net+Android+IOS开发.Net培训、期待与您交流! ============ 详细请查看:http://edu.csdn.net

原文地址:https://www.cnblogs.com/super614508584/p/3508478.html