小谈LRU 和 LinkedHashMap

LRU (Least Recently Used)

LRU算法其实就是缓存一定数目的数据,超过这个数目的时候就要删除对应一条最老的数据,如果插入的数据在缓存中已经存在说明缓存命中,那么就将这个节点放到队头表示最新。

在java中的整体实现其实就是 链表、HashMap、再弄俩个头尾节点指针变量辅助就搞定了 。

其实就是java里面的LinkedHashMap,而且LinkedHashMap中提供了现成的api调用,我们自己继承覆盖一下它的removeEldestEntry方法即可。

LinkedHashMap实现原理

LinkedHashMap的数据结构其实就是hashmap,差别就在于LinkedHashMap的key是一个链表节点(双向),遍历LinkedHashMap的时候其实是在遍历key,然后根据key获取键值对进行输出,这就达到了按照输入的顺序有序输出。

讲解到位的一篇博文: LRU Java实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值