LRU算法

LRU(最近最少使用移除)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

LRU缓存就是使用这种原理实现,简单的说就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉
新数据插入到链表头部,每当缓存命中(即缓存数据被访问),则将数据移到链表头部, 当链表满的时候,将链表尾部的数据丢弃

java中最简单的LRU算法实现,就是利用jdk的LinkedHashMap,覆写其中的removeEldestEntry(Map.Entry)方法即可
如果你去看LinkedHashMap的源码可知,LRU算法是通过双向链表来实现,当某个位置被命中,通过调整链表的指向将该位置调整到头位置,新加入的内容直接放在链表头,如此一来,最近被命中的内容就向链表头移动,需要替换时,链表最后的位置就是最近最少使用的位置。
也可以利用QUEUE实现的offer添加一个元素

群交流(262200309)
原文地址:https://www.cnblogs.com/webster1/p/7739201.html