Skip to content

Commit 1fe4d11

Browse files
committed
feat: 增加基础能力的集合篇章,高频使用到的两个集合类,SparseArray和LinkedHashMap
1 parent 1f658b4 commit 1fe4d11

3 files changed

Lines changed: 36 additions & 7 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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。
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
> 这篇文章让我想起了一种学习方式,就是压缩知识信息,提炼出关键词,再牢牢记住,这样可以减少记忆量,且以后需要用到,可以用关键字推导出来,本文就是用这种关键字的方式来开篇阐述,写作技巧值得学习!

SUMMARY.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,13 +264,13 @@
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

0 commit comments

Comments
 (0)