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这一特点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值