Skip to content

Commit cc68dd3

Browse files
committed
增加学习计划
1 parent 65554c1 commit cc68dd3

File tree

4 files changed

+95
-0
lines changed

4 files changed

+95
-0
lines changed

java.util.Collection.png

134 KB
Loading

java.util.Map.png

76.3 KB
Loading

jdk-collection-classes.png

220 KB
Loading

plan.adoc

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
= JDK & STL 源码分析计划
2+
3+
== 总体思路
4+
5+
. 学习基本的数据结构认识。兵马未动粮草先行。先把基础理论搞清楚。
6+
.. 学Java的,可以从下面两本书中选一本:
7+
... https://book.douban.com/subject/26745780/[数据结构与算法分析] -- 这本书的优点在于和 Java JDK 的集合类很贴近。
8+
... https://book.douban.com/subject/19952400/[算法(第4版)] -- 这本书胜在图很多。
9+
.. 学 C/C++ 的,可以看下面这套书:
10+
... https://book.douban.com/subject/4065258/[算法:C语言实现 (第1~4部分)]
11+
... https://book.douban.com/subject/4191525/[算法:C语言实现 (第5部分)]
12+
. 自己实现一遍基本的数据结构;
13+
. 阅读 JDK 或 STL 源码,做学习笔记。
14+
+
15+
TIP: 对比一下自己的实现和这些经典代码的实现,总结自己差距,提高自己的编码能力。
16+
+
17+
.. https://book.douban.com/subject/1110934/[STL源码剖析 ] -- 阅读源码时,建议参考一下本书的内容。
18+
.. 建议把网上的源码分析笔记都看一看,取长补短,补充自己的分析。
19+
.. 建议把网上相关面试题也看一看,检验自己的学习成果。
20+
. 相关联的 LeetCode 上的题都刷掉。
21+
22+
[NOTE]
23+
====
24+
还有两个想法:
25+
26+
. 可以把 Redis 的实现也过一下,Redis 实现也有很多不错的思路。毕竟 Redis 是目前最常用的缓存解决方案。
27+
. Java 中有很多针对集合类做扩展的库,可以一并学了,这样就能更清楚了解 Java JDK 实现的不足,开阔自己的眼界:
28+
.. https://github.com/google/guava[google/guava: Google core libraries for Java]
29+
.. https://commons.apache.org/proper/commons-collections/[Apache Commons Collections]
30+
.. https://www.eclipse.org/collections/[Eclipse Collections - Features you want with the collections you need.]
31+
====
32+
33+
== JDK 集合类
34+
35+
*Base*::
36+
. `java.lang.Iterable`
37+
. `java.util.Collection`
38+
. `java.util.AbstractCollection`
39+
40+
*List*::
41+
. `java.util.List`
42+
. `java.util.AbstractList`
43+
. `java.util.AbstractSequentialList`
44+
. `java.util.LinkedList`
45+
. `java.util.Vector`
46+
. `java.util.Stack`
47+
. `java.util.ArrayList`
48+
49+
*Queue*::
50+
. `java.util.Queue`
51+
. `java.util.Deque`
52+
. `java.util.AbstractQueue`
53+
. `java.util.ArrayDeque`
54+
. `java.util.PriorityQueue`
55+
56+
*Set*::
57+
. `java.util.Set`
58+
. `java.util.AbstractSet`
59+
. `java.util.SortedSet`
60+
. `java.util.EnumSet`
61+
. `java.util.NavigableSet`
62+
. `java.util.HashSet`
63+
. `java.util.TreeSet`
64+
. `java.util.LinkedHashSet`
65+
66+
67+
image::java.util.Collection.png[]
68+
69+
*Map*::
70+
. `java.util.Map`
71+
. `java.util.SortedMap`
72+
. `java.util.NavigableMap`
73+
. `java.util.AbstractMap`
74+
. `java.util.TreeMap`
75+
. `java.util.WeakHashMap`
76+
. `java.util.EnumMap`
77+
. `java.util.IdentityHashMap`
78+
. `java.util.LinkedHashMap`
79+
. `java.util.HashMap`
80+
. `java.util.Dictionary`
81+
. `java.util.Hashtable`
82+
83+
image::java.util.Map.png[]
84+
85+
*Iterator*::
86+
. `java.util.Iterator`
87+
. `java.util.PrimitiveIterator`
88+
. `java.util.ListIterator`
89+
90+
来张总体结构图:
91+
92+
image::jdk-collection-classes.png[]
93+
94+
TIP: 这里没有包含并发相关的集合类。这块内容放到并发中一起搞。
95+

0 commit comments

Comments
 (0)