LruCache初次了解

之前有看到过关于LruCache的面试题,今天趁空闲时间看一下LruCache原理,里面巧用了LinkedHashMap。

参考了两篇文章:

https://juejin.im/post/5a4b433b6fb9a0451705916f

https://www.jianshu.com/p/b49a111147ee

第一个是基于LinkedHashMap讲的,第二个是基于LruCache讲的。

但核心还是LinkedHashmap。

LinkedHashMap继承HashMap,只不过在自己内部维持了一个双向链表。每一个节点都有before和after指针。

LrcCache是 least  recurrent used 缩写  意指最少 最近 使用的。

LinkedHashMap 结合自身的特点会在get时重新排序,当然这个排序是基于put。会把get的元素从原始位置移除,再拼接之前和之后的元素,这个是双向链表能够做到的,把get的元素放到双向链表末尾。

LrcCache借助它的这一特点,当put时超过缓存所设定的值那么就从头部删除元素,而尾部是最动态最常用的元素。LinkedHashMap刚好能够满足LrcCache这一特点。

 

 

你可能感兴趣的:(android,中级)