Java Collections 源码分析

Java Collections API源码分析

侯捷老师剖析了很多Framework,如MFC,STL等。侯老师有句名言:html

源码面前,了无秘密java

这句话还在知乎引发普遍讨论git

我对教授程序设计的一点想法是:程序员

  • 同窗们开始不会编程,最好的学习方式是读教材,敲代码,我还专门写了一篇博客指导同窗们敲代码:《积极主动敲代码,使用Junit学习Java程序设计》,我认为阅读经典图书,积极主动敲5000行左右的代码,应该能解决语言基本语法的问题,基本程序设计的问题,基本工具(git,jdb,junit,idea...)的使用问题web

  • 而后同窗们应该独立编写5000行左右的代码,解决程序逻辑错误的调试,模块分解,数据结构与选用,问题解决的通常过程等相关问题算法

  • 有了10000行代码的基础,后面的学习提升要依靠代码阅读了,好比JUnit的源码,JHotdraw的源码,Java Collection API的源码,Java JCE的源码等编程

教学中也是想经过这三个步骤进行训练。api

咱们这学期主要讲数据结构,但愿同窗们在学习时能分析一下Java Collection的源代码。数据结构

侯捷老师在《STL源码剖析(jjhou)》一书中说:框架

我开玩笑地对朋友说,这本书出版,给大学课程中的“数据结构”和“算法”两门授课老师出了个难题。几乎全部可能的做业题目(复杂度证实题除外),本书都有了详尽的解答。然而,若是学生可以从庞大的 SGI STL 源码中干净抽出某一部份,加上本身的包装,作为呈堂做业,也足以证实你有资格得到学分和高分。事实上,追踪一流做品并于其中吸收养份,远比本身关起门来写个三流做品,价值高得多 — 个人确认为99.99 % 的程序员所写的程序,在 SGI STL 面前都是三流水准。

我相信绝大多数程序员用Java实现的数据结构和算法,至关于Java Collection API也是三流水准,但愿同窗们经过代码分析学习一流代码的实现方法,技巧等。

侯捷老师在《STL源码剖析(jjhou)》一书中说:

源码以前了无秘密,你将看到vector的实现、list的实现、heap的实现、deque的实现、RB-tree的实现、hash-table的实现、set/map 的实现;你将看到各类算法(排序、搜寻、排列组合、数据移动与复制…)的实现;你甚至将看到底层的memory pool 和高阶抽象的traits 机制的实现。那些数据结构、那些算法、那些重要观念、那些编程实务中最重要最根本的珍宝,那些蜇伏已久似乎已经还给老师的记忆,将从新在你的脑中闪闪发光。

我但愿同窗们在分析Java Collection API源码时有相同的收获。

代码阅读和分析同窗们能够重点参考一下侯捷老师上穷碧落下黄泉-源码追踪经验谈,文章要点是:

  • 不要"一切从轮子造起",参考相关图书,博客
  • 用好工具:咱们推荐IDEASourceInsight
  • 要作笔记
  • 须要的基础本身要打牢

你们也能够参考:

  

源码下载

安装JDK时,选中“源代码":

安装完就会出一个src.zip的文件,解压了就包含Java Collections API的源码:

这些代码在java.util包中:

总览

ArrayList

参考资料



若是你以为本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文

相关文章
相关标签/搜索