package LRU;
import java.util.*;
/**
* LRU class
*
* @author wsy
* @Date 2020/10/20 18:50
*/
public class LRU extends LinkedHashMap {
private static float LOAD_FACTOR = 0.75f;
private static int INIT_CAPACITY = 3;
private float maxCapacity;
public LRU(int maxCapacity){
super(INIT_CAPACITY,LOAD_FACTOR,true);
this.maxCapacity = maxCapacity;
}
@Override
/**
* 如果当前该函数返回true,表示应该删除EldestEntry。否则不删,继续扩容。
*/
protected boolean removeEldestEntry(Map.Entry eldest) {
if (size() > maxCapacity){
return true;
}
return false;
}
public static void main(String[] args) {
LRU cache = new LRU(3);
cache.put(1,null);
cache.put(2,null);
cache.put(3,null);
cache.put(1,null);
cache.put(4,null);
for (Object object: cache.entrySet()) {
System.out.println(object);//3 1 4
}
}
}
用java的LinkedHashMap实现LRU
最新推荐文章于 2025-01-03 19:45:33 发布
本文介绍了一种基于Java的LRU(Least Recently Used)缓存实现方式,通过继承LinkedHashMap并重写removeEldestEntry方法来达到LRU缓存的效果。示例代码展示了如何设置缓存容量及基本的操作流程。

572

被折叠的 条评论
为什么被折叠?



