Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具。它就像工匠的工具箱一样,它能给使用它的人提供便利与效率。
Java集合框架不是什么高深的技术,也不是什么苦涩的知识,它只是把常用的数据结构和算法集合在一起,让我们不用重复造轮子,能更轻松地、更高效地处理数据。
Java集合类分为两大类:Collection和Map。
先看Collection。Collection翻译为中文是”集合“的意思。学过数学都知道,集合是一类元素组成的集体,它的每一个单位元素都是单一的个体。我们可以把Collection看成是一个装着球的格子箱,箱里的每一个格子只能放一个球:

Map。Map有”映射“的意思。我们知道映射是成对出现的,所以映射的单位元素都是一对有关联的个体。我们同样可以把Map看成是一个装着球的格子箱,不同的是这次箱里的每个格子装的是两个有关联的球:

下面的图中,白色的是接口,红色的是类

中间插一句:为什么这里把接口和类分开呢?因为我们在实际操作中,类一般用来实例化,接口一般用来向上转型。你总不能new个接口吧?而且我们主要学的也是具体的类而不是接口)

这种图对我们学习Java集合大有裨益。我总结了几点:
- 参考图中的层次关系自上而下地学习,这样一来,我们就可以把共有的方法一起学了,在学习具体的类时只需学习它特有的方法。
- 使用ArrayList时,我们知道他属于Collection,而Collection添加元素的共有方法是 add 。使用HashMap时,我们又知道它属于Map,而Map添加元素的共有方法是 put 。这样我们就不会把它们添加元素的方法搞混了。
- 选择数据结构是,我们可以先分析是Collection还是Map合适。然后在从上往下回忆有哪些类可以使用。
- 能让我们更了解集合类。就我个人来说,在使用ArrayList时如果不清楚他的层次树总感觉”不太安心“。这个类就像凭空出现的一样,不知道它从哪里来又能去到哪。如果有它的层次图就有一种“所有的障碍都消失了”的感觉,有掌握全局的快感。