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]

  • 相关阅读:
    C#开发串口总结,并提炼串口辅助类到公用类库中
    sharepoint Lists Web service 用法
    .NET简谈策略模式
    细说 Form (表单)
    步步为营 SharePoint 开发学习笔记系列 一、简介
    Memcached进行缓存层设计
    各大主流.Net的IOC框架性能测试比较
    十年磨一剑,BloodyAngel!
    hosts
    新浪微薄的挂件
  • 原文地址:https://www.cnblogs.com/dailidong/p/7571178.html
Copyright © 2011-2022 走看看