解决什么问题为了提高效率,很多数据是可以放在内存中的,但是内存空间是有限的,假如数据满了,再添加数据,应该清除哪些数据了 。LRU就是一种清除数据的策略,LRU是Least Recently Used的缩写,即最近最少使用的数据可以清除
数据结构我们使用HashMap来存放数据,再使用双向链表来维护最近最少使用的顺序,双向链表从头到尾依次最近最少使用的到最近最多使用的

文章插图
上图中,依次加入A,B,C这时候访问一下A,则把A放在链表的尾部

文章插图
如果空间只够存储3个元素,这时候要加D了,就需要头部的B弹出,把D放在尾部 。
【Least Recently Used 算法--LRU】所以,每次访问的元素或者添加的元素就放在队尾,也就是最近最常用的元素,那么放在头部的就是最近最少使用的元素 。
代码JAVA中的LinkedHashMap其实就是这样一个结构,Map中这几个方法没有实现,LinkedHashMap实现了 。

文章插图
可以使用HashMap和链表来实现,下面的代码是链表中的几个关键步骤:
定义数据结构(节点,双向链表,一个头,一个尾):

文章插图

文章插图
添加节点操作

文章插图
容量满了删除最近最少使用的

文章插图
每次访问都把元素放在尾部

文章插图
推荐阅读
-
马鲁兰迪■野火肆虐又面临干旱,澳大利亚这小镇酒比水还要多
-
-
保险|业绩承压财报又遭询问,华凯保险深陷发展“阴霾”
-
-
1818黄金眼|杭州女子报警!凌晨收到弟弟转帐,之后人就失联了…
-
勒布朗·詹姆斯|至少7500万?掘金锋线大将跳出合同,防守詹姆斯让其身价暴涨
-
王者荣耀|王者荣耀:在当前赛季排位赛中双打野最吃香,而坦边打野最【稳】
-
台积电|画风突变!台积电不愿意妥协,接连做出3个动作
-
雪梨|1986年, 徐少强欺骗雪梨未婚生子后转身抛弃, 今雪梨“报复”真高级
-
浪子归家 结果蒙了,快递小哥被投诉后怒怼女顾客:1元就想送货上门
-
肝病医生田飞@小三阳患者竟成了肝癌的爆发人群?想要避免你需要这样做
-
获得北京小车指标后,能否将父母赠与的已上外地牌照的车上北京牌照
-
「国家卫健委」国家卫健委:2月26日新增确诊病例433例 累计死亡病例2744例
-
「游戏电竞小狐美」绝版光环外观爆料,还不如去年好看,DNF体验服:520表白盒子实测
-
-
-
叮当快药TB|这13种快速解压法值得一试,压力大、焦虑迷茫…面对心理问题
-
甜乐影视|便宜不输大牌,51岁王菲成冻龄女神?分享自用的“抗衰老”面霜
-
护肤品|一直回购的8种国货护肤品,便宜又好用,连美白精华都不超过百元
-
林心如■林心如晒精致早餐,运动帽配墨镜低调大方,皮肤超好惹人羡