【小笨鸟看JDK1.7集合源码之一】JAVA集合整体框架

  首先这只是我的笔记,可能会有错误,如果能入各位看官法眼请随意指出,我会虚心接受~~

  主要是参考大神的博客 http://blog.csdn.net/column/details/collection.html

 

  java集合工具包位于util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习集合框架大致可以分为五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。

下面是框架图:

 

  从上图可以看出顶层的是3个接口,分别是Iterator迭代器超级接口,这个接口上面没有实现任何接口,是顶层。而Collection接口是实现了Iterator接口,存在依赖关系;Map根据JDK1.7源码可以看到也是一个超级接口,没有实现任何接口方法。
具体分析:
(1)Collection接口是高度抽象出来的接口,内部元素允许有序也可以无序,取决于实现它的方法的需要,最常见的具体的直接口如:List与Set,Deque,以及实现类Vector
     List 接口,表示一个列表,例如数组、队列、链表、栈等,其中元素可以重复,常见的实现如ArrayList和LinkedList,一个是数组实现列表,一个使用链表实现列表,都是允许重复的添加元素,后面具体分析用法;
     Set接口,表示一个集合,其中的元素是不允许重复,常用的实现类有:HashSet和TreeSet,HashSet通过Map中的HashMap实现,而TreeSet通过Map中的TreeMap实现。其中TreeSet还实现了一个SortedSet接口,所以内部是有序的;
     Deque接口,表示队列;
     Vector类是一个向量数组,可以实现可增长的对象数组,通常的实现是Stack栈,先进后出;
 
  注意:我们可以看到,抽象类AbstractCollection、AbstractList和AbstractSet分别实现了Collection、List和Set接口,这是Java集合框架中用的很多适配器设计模式,用这些抽象类去实现接口,在抽象类中实现接口中的若干或全部方法这样下面一些类只需要继承该抽象类,并实现自己需要的方法即可,不用实现接口中的全部抽象方法。
     这个适配器设计模式的主要功能是,我们现在需要实现接口中的某个功能,但是又不想实现它的全部功能,这时候我们可以在中间过渡一个抽象的实现类帮我们先实现这个接口中的全部方法,之后我们就直接继承这个抽象类,然后覆盖也就是重写这个抽象类中实现的方法即可。这就是适配器设计模式的精髓。。。
 
(2)Map是一个映射接口,其中每一个元素都是一个Key-Value键值对,同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap等都是通过继承这个抽象类来实现Map接口;
     Map中的元素都是唯一的,Key值是通过hashcode计算,不能重复,value可以重复,Treemap实现了SortedMap所以是有序的,HashMap是无序的。
 
(3)Iterator接口是迭代器接口,主要用于遍历集合中的元素,但是不能遍历Map集合,只能遍历Collection接口的实现类。
 
(4)Arrays和Collections工具类,是用来操作数组、集合的两个工具类。
posted @ 2016-04-18 19:47  CfoolishbirdC  阅读(914)  评论(0编辑  收藏  举报