We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 7e1f27d commit 08ae0f4Copy full SHA for 08ae0f4
6. 基础能力/集合/HashMap.md
@@ -0,0 +1,23 @@
1
+# HashMap
2
+
3
+## 前言
4
5
+HashMap并不简单,涉及的知识遍及线程、Java内存模型、哈希计算、链表结构、二进制操作等等,所以一个HashMap的掌握程度也能看出开发的技术功能。
6
7
+那怎么学?我建议是细节吃透+发散思维。
8
9
+1. 咬死细节,多问几个为什么。
10
+ 跟着下面几篇博文,先对HashMap的整体流程有所熟悉,再死扣设计细节。比如为什么要数组+链表这个结构?换成为什么要二次哈希?为什么String的hash算法使用固定常量31?为什么JDK1.8后使用红黑树代替过长的单链表?……
11
12
+2. 发散思维,多想还有什么用途。
13
+ 不满足于掌握HashMap,而是要吃透知识点,那,既然涉及到哈希计算,我们平时常用的哈希算法有哪些?又有哪些应用?既然有多线程问题,那HashTable和CurrentHashMap是怎么解决的?有什么不同?既然有红黑树,红黑树在哪些地方还有应用?……
14
15
+这些问题,相信阅读完下面几篇优秀的博文,你就会得到答案。
16
17
+## 博文
18
19
+- [图解HashMap原理](https://www.jianshu.com/p/dde9b12343c1)
20
+> 就着配图,HashMap的源码读起来非常轻松,本文基于JDK1.7源码,非常细致地剥完了HashMap的原理。
21
22
+- [HashMap深度分析](https://www.jianshu.com/p/8b372f3a195d)
23
+> 从面试的角度切入,可以作为细节点的补充。
0 commit comments