Skip to content

Commit 6718451

Browse files
committed
feat: 基础能力-集合篇章增加关键字(压缩记忆)
1 parent 05ac74a commit 6718451

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

6. 基础能力/集合/HashMap.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
# HashMap
22

3+
## 关键词
4+
- 共同:二次Hash、2倍扩容、Fail-Fast机制、链地址法解决冲突、Key尽量是不可变对象、容量必须是2的n次方
5+
- Java7:数组+链表、链表头插(ReHash并发链表环)
6+
- Java8:数组+链表+红黑树、链表尾插
7+
38
## 前言
49

510
HashMap并不简单,涉及的知识遍及线程、Java内存模型、哈希计算、链表结构、二进制操作等等,所以一个HashMap的掌握程度也能看出开发的技术功能。
611

712
那怎么学?我建议是细节吃透+发散思维。
813

914
1. 咬死细节,多问几个为什么。
10-
跟着下面几篇博文,先对HashMap的整体流程有所熟悉,再死扣设计细节。比如为什么要数组+链表这个结构?换成为什么要二次哈希?为什么String的hash算法使用固定常量31?为什么JDK1.8后使用红黑树代替过长的单链表?……
15+
跟着下面几篇博文,先对HashMap的整体流程有所熟悉,再死扣设计细节。比如为什么要数组+链表这个结构?换成为什么要二次哈希?为什么String的hash算法使用固定常量31?为什么JDK1.8后使用红黑树代替过长的单链表?……
1116

1217
2. 发散思维,多想还有什么用途。
13-
不满足于掌握HashMap,而是要吃透知识点,那,既然涉及到哈希计算,我们平时常用的哈希算法有哪些?又有哪些应用?既然有多线程问题,那HashTable和CurrentHashMap是怎么解决的?有什么不同?既然有红黑树,红黑树在哪些地方还有应用?……
18+
不满足于掌握HashMap,而是要吃透知识点,那,既然涉及到哈希计算,我们平时常用的哈希算法有哪些?又有哪些应用?既然有多线程问题,那HashTable和CurrentHashMap是怎么解决的?有什么不同?既然有红黑树,红黑树在哪些地方还有应用?……
1419

1520
这些问题,相信阅读完下面几篇优秀的博文,你就会得到答案。
1621

6. 基础能力/集合/SparseArray.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# SparseArray
22

3+
## 关键词
4+
5+
双数组、引入DELETE标记删除O(1)、二分查找、避免自动装箱、满了才扩容、优化追加元素可直接追在数组末尾
6+
37
## 前言
48

59
`SparseArray`相比起`HashMap`来说,源码简单得多。

0 commit comments

Comments
 (0)