★存储对象:数组、集合
对象多了用集合存,数据多了用对象存
★数组和集合的不同?

  • 数组长度是固定的,集合长度是可变的

  • 数组中只能存储同一类型的对象,而集合中存储的只要是对象就行

★集合框架:是不断向上抽取共性出来的
  Collection框架中包含了大量集合接口以及这些接口的实现类和操作它们的算法(比如排序、迭代、查找等等),collection主要提供了List(列表)、Queue(队列)、Set(集合)、Stack(栈)和Map(映射表,用于存放键值对)等数据结构,其中List、Queue、Set、Stack都继承自collection接口。
  为什么会出现这么多容器呢?
因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构。每个容器因为数据结构的不同做了单独的划分,因为它们的结构特点不一样。

  Collection位于整个集合框架的顶端,是整个集合框架的基础,它里面存储一组对象表示不同类型的Collections,它的作用只是提供维护一组对象的基本接口。

  Collection中最常用的三个接口是List、Set、Map。

  • List(ArrayList、LinkesList、Vector)

List又称为有序的Collection,它按照对象的进入顺序保存对象,所以它能对列表中每个元素的位置进行精准的判断,方便了插入删除等操作对元素位置判断的控制,同时它也可以保存重复的对象

  • Set(HashSet、TreeSet)

Set表示集合,最主要的特点是集合中的元素不能重复,所以存入Set的每个元素都必须定义equals()方法来确保对象的唯一性。

TreeSet实现了SortedSet接口,因此TreeSet容器中元素是有序的。

  • Map(HashMap、TreeMap、LinkedHashMap、WeakHashMap、IdentityHashMap)

   Map提供了一个从键映射到值的数据结构,用来保存键值对,其内的值是可以重复的,但是键必须是唯一的(和映射的概念相同,可以一对多但不能多对一)。

   虽然以上列举的类都可以实现Map接口,但是它们的执行效率不同

   HashMap是基于散列表来实现的,采用对象的HashCode可以实现快速查询;

   LinkHashMap采用列表来维护内部的顺序;

   TreeMap是基于红黑树的数据结构来实现的,内部元素是按序排列的。

   Map是一个接口,所以不能直接实例化Map对象,但是可以实例化实现Map接口的类的对象,如:Map hera = new HashMap();


Collection框架类图


wKiom1UL4p-AcisaAAIv-teA5vA381.jpg


图片链接:http://www.2cto.com/uploadfile/2012/0921/20120921030244923.png