File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed
Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change 11# HashMap
22
3+ ## 关键词
4+ - 共同:二次Hash、2倍扩容、Fail-Fast机制、链地址法解决冲突、Key尽量是不可变对象、容量必须是2的n次方
5+ - Java7:数组+链表、链表头插(ReHash并发链表环)
6+ - Java8:数组+链表+红黑树、链表尾插
7+
38## 前言
49
510HashMap并不简单,涉及的知识遍及线程、Java内存模型、哈希计算、链表结构、二进制操作等等,所以一个HashMap的掌握程度也能看出开发的技术功能。
611
712那怎么学?我建议是细节吃透+发散思维。
813
9141 . 咬死细节,多问几个为什么。
10- 跟着下面几篇博文,先对HashMap的整体流程有所熟悉,再死扣设计细节。比如为什么要数组+链表这个结构?换成为什么要二次哈希?为什么String的hash算法使用固定常量31?为什么JDK1.8后使用红黑树代替过长的单链表?……
15+ 跟着下面几篇博文,先对HashMap的整体流程有所熟悉,再死扣设计细节。比如为什么要数组+链表这个结构?换成为什么要二次哈希?为什么String的hash算法使用固定常量31?为什么JDK1.8后使用红黑树代替过长的单链表?……
1116
12172 . 发散思维,多想还有什么用途。
13- 不满足于掌握HashMap,而是要吃透知识点,那,既然涉及到哈希计算,我们平时常用的哈希算法有哪些?又有哪些应用?既然有多线程问题,那HashTable和CurrentHashMap是怎么解决的?有什么不同?既然有红黑树,红黑树在哪些地方还有应用?……
18+ 不满足于掌握HashMap,而是要吃透知识点,那,既然涉及到哈希计算,我们平时常用的哈希算法有哪些?又有哪些应用?既然有多线程问题,那HashTable和CurrentHashMap是怎么解决的?有什么不同?既然有红黑树,红黑树在哪些地方还有应用?……
1419
1520这些问题,相信阅读完下面几篇优秀的博文,你就会得到答案。
1621
Original file line number Diff line number Diff line change 11# SparseArray
22
3+ ## 关键词
4+
5+ 双数组、引入DELETE标记删除O(1)、二分查找、避免自动装箱、满了才扩容、优化追加元素可直接追在数组末尾
6+
37## 前言
48
59` SparseArray ` 相比起` HashMap ` 来说,源码简单得多。
You can’t perform that action at this time.
0 commit comments