File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # LinkedHashMap原理
2+
3+ ## 前言
4+ 一谈到 ` LRU ` 就离不开 ` LinkedHashMap ` ,你想想,有哪个数据结构,既有 ` O(1) ` 的取值复杂度(不冲突的情况下),又能有序。** 摸清楚` LinkedHashMap ` ,你也可以自己设计一个淘汰自策略的 ` LRU ` 容器了** 。
5+
6+ 由于 ` LinkedHashMap ` 继承自 ` HashMap ` ,所以** 在分析源码之前一定要先看看 ` HashMap ` 的源码** 。
7+
8+ 顺便说一句,` LinkedHashMap ` 利用了 ` Hook ` 方法,使得自己实现有序机制的同时又能最大程度复用 ` HashMap ` 原有的流程,是** 模板模式的绝佳应用** 。
9+
10+ ## 博文
11+ - [ 图解LinkedHashMap原理] ( https://www.jianshu.com/p/8f4f58b4b8ab )
12+ > 通俗易懂,一篇你就能搞懂 LinkedHashMap 的原理,美中不足是本文基于 jdk1.7。
Original file line number Diff line number Diff line change 1+ # SparseArray
2+
3+ ## 前言
4+
5+ ` SparseArray ` 相比起` HashMap ` 来说,源码简单得多。
6+
7+ 我们首先要清楚 ` SparseArray ` 的诞生背景和应用场景,这将影响它的特点。我们知道,谷歌官方推荐在 Android 开发中,使用` SparseArray ` 代替` HashMap ` ,那反过来想想,` HashMap ` 有什么缺点呢?
8+
9+ 1 . 内部负载因子扩容,意味着 1 - 负载因子剩下的空间永远不会用来放元素,浪费空间!
10+ 2 . Map 的 key value 需要使用包装类型,装箱操作会创建对象,如果频繁的装箱操作会消耗许多内存。
11+
12+ 那` SparseArray ` 又是怎么解决这个问题的呢?一切答案尽在下面的博文中。
13+
14+ ## 博文
15+
16+ - [[ 原创] 面试还在问 SparseArray?记住 3 句话让你临时把佛脚抱好!] ( https://juejin.im/post/5da1481e6fb9a04de96e8b72 )
17+ > 这篇文章让我想起了一种学习方式,就是压缩知识信息,提炼出关键词,再牢牢记住,这样可以减少记忆量,且以后需要用到,可以用关键字推导出来,本文就是用这种关键字的方式来开篇阐述,写作技巧值得学习!
Original file line number Diff line number Diff line change 264264 * 网络协议
265265
266266 * [集合]()
267- * [集合这么多,我该怎么掌握?](6. 基础能力/集合/集合这么多,我该怎么掌握?.md)
268- * [HashMap](6. 基础能力/集合/HashMap.md)
269- * LinkedHashMap
270- * HashTable
271- * CurrentHashMap
272- * TreeMap
273- * SparseArray
267+ * [集合这么多,我该怎么掌握?](6. 基础能力/集合/集合这么多,我该怎么掌握?.md)
268+ * [HashMap](6. 基础能力/集合/HashMap.md)
269+ * [ LinkedHashMap](6. 基础能力/集合/LinkedHashMap.md)
270+ * HashTable
271+ * CurrentHashMap
272+ * TreeMap
273+ * [ SparseArray](6. 基础能力/集合/SparseArray.md)
274274
275275* [ 数据结构和算法] (6. 基础能力/数据结构与算法.md)
276276
You can’t perform that action at this time.
0 commit comments