Collection集合框架

Collection集合框架

  • 集合框架接口
    • 集合框架主要继承链
  • 接口分析
  • 集合抽象类
  • 具体实现类
  • 涉及新特性

集合框架接口

在研究源码的时候,许多人会用面向过程的思路去分析源码。这是一种比较不好的习惯,因此,笔者强调,研究对象时,要多采用“面向对象”的思想。即“继承(接口)决定方法,结构决定算法”,从而在看源码时,能够以“物以类聚”的观点,一叶知秋。
Collection集合框架_第1张图片

图1 集合接口

图1是官网上JDK8提供的视图,值得注意的是,虽然Map接口不继承于Collection接口,但是Map也属于集合框架,也就是说,实现Map接口的实现类,也要实现Collection的一些方法特性,例如需要提供Iterator迭代器。这或许是由于Map是键值对结构,而其他集合是单个元素结构,因此在最初设计时,没有让Map继承Collection接口,然后,官网中,是把Map划分到集合框架中的。

集合框架主要继承链

通过UML了解接口和类的组成成员是个阅读源码一个比较好的习惯,因为UML中可以了解到两个很重要的元素,即继承链(接口)以及成员属性。

Collection集合框架_第2张图片

图2 集合主要接口继承关系

研究源码的时候,接口和抽象类往往是很重要的,因为接口代表了能力,看一个类实现了哪些接口,便能直观上知道其大致有哪些方法,即“继承(接口)决定方法”,这些在后面源码分析中也会涉及。而抽象类,往往是对大部分方法进行了通用实现,只保留了少部分个性方法给子类实现,也就是说,看一个类,就等于了解了一批子类,这是非常“值得”的买卖。

Collection集合框架_第3张图片

图3 集合主要抽象类和实体类继承关系

图中的抽象类和实体类就是本集合框架中要研究的对象,该图并非完成的继承关系图,因为涉及到的一些接口,没有在图中画出,但在后续文章中会逐渐涉及。

抽象类主要有AbstractCollection,AbstractList,AbstractSequentialList,AbstractSet,AbstractMap和Dictionary。

实体类主要有ArrayList,LinkedList,Vector,Stack;HashMap,LinkedHashMap,TreeMap,WeakHashMap,Hashtable;HashSet,LinkedHashSet,TreeSet。

后续文章会按序介绍,至于其他的实现类,有兴趣的可以在看完文章学着分析,会涉及更多其他方面知识。

接口分析

以下分别对这些接口进行分析:
Iterable接口
Collection接口
List接口
Set接口
Map接口
SortedSet接口
SortedMap接口
NavigableSet接口
NavigableMap接口
Queue接口
Deque接口
集合接口总结

集合抽象类

AbstractCollection抽象类
AbstractList抽象类
AbstractSequentialList抽象类
AbstractSet抽象类
AbstractMap抽象类
Dictionary抽象类

具体实现类

ArrayList介绍
LinkedList分析
Vector分析
Stack分析
HashMap分析
LinkedHashMap分析
WeakHashMap分析
Hashtable分析
TreeMap分析

对于set部分的类,基本都是使用组成聚合原则,将map类作为内部对象直接使用,例如HashSet内置了HashMap,没什么分析价值,读者有兴趣可以自行分析了解。

完。。。。

涉及新特性

函数式编程与lamada表达式

你可能感兴趣的:(JDK8,集合源码)