JDK源码学习之集合框架综述

一、Java集合框架框图

对于Java集合框架,在具体介绍某一类之前,先对其做一个整体的概述,以确保对其整体把握。已达到对Java集合框架的整体把握。废话不多说,先上一张Java集合框架的框图(不包含并发,有关并发后续再整理)。


                

对上图做几点简要说明:蓝颜色表示抽象类

  1. 主要包含三个顶层接口分别是 Map、Collection以及Iterator。
  2. Map接口的实现类包含了HashMap、Hashtable、TreeMap以及WeakHashMap。抽象类AbstractMap实现了Map的大部分API。
  3. Collection接口下有三个继承接口List、Set、Queue。
  4. Set接口的实现类主要是TreeSet 和hashSet。
  5. List接口的实现类主要是ArrayList、LinkedList,还有Vector,常用栈和队列。
  6. Queue以及继承它的Dueue分别表示队列和双端队列,主要实现类是LinkedList。相比于List和Set接口,Queue更倾向于是存储数据而并非处理数据。
  7. Iterotor,迭代器是用来遍历并选择序列中的对象,而不必关心元素的数量,只要交给hasNext()和next()方法就可以了,但是只能单向移动。ListIterator是一个更强大的Iterator的子类型,只能用于List类的访问,可以双向移动。
  8. Enumeration接口比Iterotor小。下面再讲

二、接口说明

      1、Map接口

将对象映射到其他对象的能力是一种解决编程问题的杀手锏,而Map就是解决此类问题的有力工具,表示了两个对象之间的映射关系,存放的是键——值对,可以通过键来查找对应的值,因此键必须是唯一的不允许重复,但不同的键可以对应不同的值。

2、Collection接口

Collection中存放的都是“单个”数据,这是相对于Map中存放的键-—值对而言。下图表示了可以通多Collection执行的所有操作,包括基本属性,红色箭头表示继承自Object和Iterator的方法。注意:其中不包含随机访问所选择元素的get()方法,因为Collection包括Set,而Set是自己维护内部顺序的,因此如果想检查Collection中的元素,那就必须使用迭代器。

AbstractCollection实现了Collection中的除Size()和iterator()以外的大部分方法。


3、Iterator接口

Iterotor,迭代器是用来遍历并选择序列中的对象,而不必关心元素的数量,只要交给hasNext()和next()方法就可以了,但是只能单向移动。ListIterator是一个更强大的Iterator的子类型,只能用于List类的访问,可以双向移动。

4、Enumeration接口

Enumeration接口比Iterator小,只有两个名字很长的方法,一个为hasMoreElements()和nextElement()。在代码中应该尽量使用Iterator,但是有时类库也会返回一个Enumeration。













猜你喜欢

转载自blog.csdn.net/sixingmiyi39473/article/details/78299603