zoukankan      html  css  js  c++  java
  • java实现极简的LRU算法

    import java.util.LinkedHashMap;
    import java.util.Map;
     
    /**
     * LRU (Least Recently Used) 
     */
    public class LRUCache<K, V> extends LinkedHashMap<K, V> {
        /**

    */
    private static final long serialVersionUID = 1L;
    //缓存大小
        private int cacheSize;
     
        public LRUCache(int cacheSize) {
            //第三个参数true是关键
            super(10, 0.75f, true);
            this.cacheSize = cacheSize;
        }
     
        /**
         * 缓存是否已满
         */
        @Override
        protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
            boolean r = size() > cacheSize;
            if(r){
                System.out.println("清除缓存key:"+eldest.getKey());
            }
            return r;
        }

        //测试

        public static void main(String[] args) {
            LRUCache<String, String> cache = new LRUCache<String, String>(5);
            cache.put("1", "1");
            cache.put("2", "2");
            cache.put("3", "3");
            cache.put("4", "4");
            cache.put("5", "5");
     
            System.out.println("初始:");
            System.out.println(cache.keySet());
            System.out.println("访问3:");
            cache.get("3");
            System.out.println(cache.keySet());
            System.out.println("访问2:");
            cache.get("2");
            System.out.println(cache.keySet());
            System.out.println("增加数据6,7:");
            cache.put("6", "6");
            cache.put("7", "7");
            System.out.println(cache.keySet());
        }

    }


    运行结果如下:

    初始化:
    [1, 2, 3, 4, 5]
    访问3:
    [1, 2, 4, 5, 3]
    访问2:
    [1, 4, 5, 3, 2]
    增加数据6,7:
    清除缓存key:1
    清除缓存key:4
    [5, 3, 2, 6, 7]

  • 相关阅读:
    SpringBoot-14-MyBatis预热篇,MySQL小结
    SpringBoot-13-插曲之Node文件重命名+自动生成json对象
    八月十九风雨大作
    诉世书
    《仪式》
    珊瑚墓地
    新生
    《应龙》
    《枝·你是树的狂舞》
    golang中使用etcd
  • 原文地址:https://www.cnblogs.com/dailidong/p/7571178.html
Copyright © 2011-2022 走看看