Java集合类
Java集合大致可以分为Set、List、Queue、Map四种体系。
1 . Set:代表无序、不可重复的集合;
2 . List:代表有序、重复的集合;
3 . Queue:代表一种队列集合;
4 . Map:代表具有映射关系的集合;
Java集合和数组的区别
数组长度在初始化时指定,意味着只能保存定长的数据。而集合可以保存数量不确定的数据。同时可以保存具有映射关系的数据(即关联数组,键值对key-value)。
数组元素可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中;
Java集合类之间的继承关系
Java的集合类主要由两个接口派生:Collection和Map,Collection和Map是Java集合框架的根接口。
ArrayList、HashSet、LinkedList、TreeSet是我们经常用到的;
Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是key-value对,也就是由key和value两个值组成。Map里的key是不可重复的,key用户标识集合里的每项数据。
HashMap、TreeMap是我们经常会用的集合类;
Collection接口
Collection接口是Set、Queue、List的父接口。Collection接口中定义了多种方法供其子类进行实现,以实现数据操作。可以添加元素、删除元素等,返回Collection集合的个数以及清空集合等。
Set集合
Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素);
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
List集合
List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引,例如第一个添加的元素索引为0,第二个添加的元素索引为1,以此类推。
List作为Collection接口的子接口,可以使用Collection接口中的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。
Queue集合
Queue模拟队列这种数据结构,队列通常是指先进先出的容器。队列的头部是在队列中存放时间最长的元素,队列的尾部是保存在队列中存放时间最短的元素。新元素插入到队列的尾部,访问元素操作会返回队列头部的元素。通常,队列中不允许随机访问队列中的元素。
Map集合
Map保存具有映射关系的数据,因此Map集合里保存着两组数,一组是保存Map里的key,另一组保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals()方法比较总是返回false。
key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的value。
Map类中还包括一个内部类Entry,该类封装了一个key-value键值对。Entry包含如下三个方法:
Map集合最典型的用法就是成对地添加、删除key-value键值对,然后就是判断该Map中是否包含指定key,是否包含指定value,也可以通过Map提供的keySet()方法获取所有key组成的集合,然后使用foreach循环来遍历Map的所有的key,根据key可以遍历所有的value。
Map集合和Set集合、List集合的关系
Map和Set的关系
如果把Map中的所有key放在一起看,他们就组成了一个Set集合(所有的key没有顺序,key和key之间不能重复),实际上Map确实包含了一个keySet()方法,用户返回Map里所有的key组成的Set集合;
Map和List的关系
如果把Map中的所有value放在一起看,它们非常类似于一个List:元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中索引不再使用整数值,而是以另外一个对象作为索引;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--------------------last line for now-------------------