在编程时,常常需要集中存放多个数据,例如权限管理里面对角色所具有的权值进行遍历然后返回。当然我们可以使用数组来保存多个对象,数组存放数据的好处就是查找简单,通过数组的下标可以准确的进行定位。但是数组也有其自身的缺陷,其长度不可变化,也就是说一旦初始化数组时指定了数组长度,则这个数组长度是不可变的。所以如果需要保存个数变化的数据,数组就无能为力了。还有一点就是而且数组无法保存具有映射关系的数据(例如记录学生成绩的键值对)。俗话说工欲善其事必先利其器,这时候就轮到集合类上场了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);但集合里只能保存对象(实际上也是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
Collection:通过名字理解类的作用,Set和List接口是Collection接口派生的两个子接口,它们分别代表了无序集合和有序集合;Queue是Java提供的队列实现,有点类似于List
Map:用于保存具有映射关系的数据
我们可以把Java的所有集合分成三大类,具体到类各有各的特点需要具体类具体分析:
1、其中Set集合类似于一个罐子,把对象添加到Set集合时,Set集合无法记住添加这个元素的顺序,所以Set里面的元素不能重复(否则系统无法准确识别这个元素)
2、List集合像一个数组,它可以记住每次添加元素的顺序,只是List的长度可变。
3、Map集合也像一个罐子,只是它里面的每项数据都由两个值组成。
不同的存储方式决定了读取方式的不同:
1、Set集合中的元素只能根据其元素本身来访问。
2、List集合中的元素,可以直接根据元素的索引来访问。
3、Map集合中的元素根据元素对应的key访问
在网上看了很多关于集合的博客,大多数人总结这些集合的实现类时总想把每个类的每个方法都搞清楚。其实想一想在短时间内这是不可能的,除非具体的用过某个类才会对某个类或者方法有深刻的印象。就像当年学习快捷键似的,N多快捷键怎么办,分门别类啊!集合类也是一样,说白了一共就两大类(Collection,Map),然后再往下分才有了三小类(Set,List,Map)。至于对待他们下边N多实现类和对待当年的快捷键是一个方法,什么常用(常用的三个集合类在图中已经由红色字体标识)就先学什么,不常用就先放一放。还有一点,总结的图应该是简洁的,而且越简洁越好。图中携带的信息越多只能说明自己脑子里的东西越少,因为什么信息都在图中了,脑子也就懒得“记忆”与思考了。