import java.util.LinkedHashMap; import java.util.Map; //模拟Lur 算法 public class redisLURextends LinkedHashMap { private final int CACHE_SIZE ; public redisLUR(int cacaheSize) { // true 这个代表了linkhashmap 按访问顺序排序,最近访问的放头部,最老的放尾部 super((int)Math.ceil(cacaheSize / 0.75) + 1, 0.75f, true); CACHE_SIZE = cacaheSize; } //当map 当map数据量大于指定缓存个数时,自动删除最老数据 @Override protected boolean removeEldestEntry(Map.Entry eldest) { return size() > CACHE_SIZE; } public static void main(String[] args) { redisLUR redisLUR = new redisLUR (5); redisLUR.put("A",1); redisLUR.put("B",2); redisLUR.put("C",3); redisLUR.put("D",4); redisLUR.put("E",5); System.out.println(redisLUR.toString()); //{A=1, B=2, C=3, D=4, E=5} redisLUR.put("F",6); System.out.println(redisLUR.toString()); //{B=2, C=3, D=4, E=5, F=6} } }
以后面试到说要简单手写个lru ,就试试这样吧