集合是包含多个对象的简单对象,所包含的对象称为元素。集合里面可以包含任意多个对象,数量可以变化;同时对对象的类型也没有限制,也就是说集合里面的所有对象的类型可以相同,也可以不同。
集合和数组比较:
集合:数量不限、类型不限
数组:定长、类型单一
数据结构存储分类:
(1)顺序存储 (2)链式存储 (3)树形存储
(4)散列存储Hash (5)Map映射存储
结构图:
集合中各个接口的特点:
1:Collection接口是一组允许重复的对象。
2:Set接口 继承Collection,无序但不允许重复。
3:List接口 继承Collection,有序但允许重复,并引入位置下标。
4:Map接口 既不继承Set也不继承Collection,是键值对。
Collection接口用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。
Set接口继承Collection接口,而且它不允许集合中存在重复项。所有原始方法都是Collection中现成的,没有引入新方法。
“集合框架”支持Set接口两种普通的实现:HashSet和TreeSet。在更多情况下,会使用HashSet存储重复自由的集合。考虑到效率,添加到
HashSet的对象需要采用恰当分配散列码的方式来实现hashCode()方法。当需要从集合中以有序的方式抽取元素时,TreeSet实现会有用处。为了能
顺利进行,添加到TreeSet的元素必须是可排序的。
List接口继承了Collection接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面
向位置的操作。
面向位置的操作包括插入某个元素或Collection的功能,还包括获取、除去或更改元素的功能。在List中搜索元素可以从列表的头部或尾部开始,如果找
到元素,还将报告元素所在的位置。
注意:
1)使用List(如ArrayList)时,不会自动调用hashCode()方法。因为在List中,重复了就重复了,不需判断,保证唯一性。
2)List中添加了下标index的功能,这样对List的修改可以利用set方法对指定位置的元素直接进行替换,不需要象Set那么复杂(要转换成数组才
能修改,之后还要转换回去)。
3)Collection用Iterator迭代器,而List可以用ListIterator列表迭代器。前者只能next(),后者不但包含next()方法,还包含previous()
方法。因此,如果要用List做类似书的翻页功能,不但可以向后翻,还可以向前翻。
ArrayList和LinkedList
如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList提供了可选的集合。
但如果要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么LinkedList实现更好。
Map接口不是Collection接口的继承。而是从自己的用于维护键-值关联的接口层次结构入手。
按定义,该接口描述了从不重复的键到值的映射。可以把这个接口方法分成三组操作:改变、查询和提供可选视图。
下面文章将结合代码来演示如何使用接口和方法的