一、什么是 LRU 算法
LRU算法又称最近最少使用算法,它的基本思想是长期不被使用的数据,在未来被用到的几率也不大,所以当新的数据进来时我们可以优先把这些数据替换掉。
代码实现
/**
* @Author: 李浩真
* @Date: 2020/6/5 12:40
* @deprecated :LUR缓存(最近最少使用)的简单实现
*/
public class LRETest {
public static void main(String[] args) {
//true表示cache中的元素按照访问顺序进行排序
LinkedHashMap cache = new LinkedHashMap(16, 0.75f, true);
//向集合中添加四个元素
cache.put("k1", "v1");
cache.put("k2", "v2");
cache.put("k3", "v3");
cache.put("k4", "v4");
//put完成后打印顺序
cache.forEach((k, v) -> {
System.out.println(k + " = " + v);
});
//访问,并打印其中k2元素
System.out.println(cache.get("k2"));
//重新打印顺序
cache.forEach((k, v) -> {
System.out.println(k + " = " + v);
});
}
}
结论:最新访问的元素会移动到链表的底部,如果需要淘汰访问次数低的缓存,只需要清理链表顶部的数据即可