美文网首页
Android-手写Lrucache

Android-手写Lrucache

作者: 有腹肌的豌豆Z | 来源:发表于2020-08-24 08:54 被阅读0次

    实现自己的LruCache

    /**
     * ================================================
     * 作    者:SharkZ
     * 邮    箱:229153959@qq.com
     * 创建日期:2020/8/23  11:48
     * 描    述
     * 修订历史:
     * ================================================
     */
    public class ZLruCache<K,V> extends LinkedHashMap<K,V> {
    
        /**
         * 最大缓存容量 
         */
        private int maxSize;
    
        public ZLruCache(int maxSize){
            // 这里开启了访问顺序排序 
            super(16,0.75f,true);
            this.maxSize=maxSize;
        }
    
        @Override
        protected boolean removeEldestEntry(Entry<K, V> eldest) {
            //return super.removeEldestEntry(eldest);
            // 自己实现 删除策略  
            // 当当前容量大于设定的最大缓存容量的时候就开启删除策略 
            return size()>this.maxSize;
        }
        
    }
    
    test1
     public static void main(String[] a){
            ZLruCache<String,String> zLruCache = new ZLruCache<>(3);
            zLruCache.put("A","我是谁");
            zLruCache.put("B","我在哪里");
            zLruCache.put("C","我在干什么");
            zLruCache.put("D","我的天啊");
            zLruCache.put("E","我我我");
            System.out.print(zLruCache);
        }
    
    • 输出结果
    {C=我在干什么, D=我的天啊, E=我我我}
    
    test2
     public static void main(String[] a){
            ZLruCache<String,String> zLruCache = new ZLruCache<>(3);
            zLruCache.put("A","我是谁");
            zLruCache.put("B","我在哪里");
            zLruCache.put("C","我在干什么");
            zLruCache.get("A");
            zLruCache.put("D","我的天啊");
            zLruCache.put("E","我我我");
            System.out.print(zLruCache);
        }
    
    • 输出结果
    {A=我是谁, D=我的天啊, E=我我我}
    
    test3
    public static void main(String[] a){
            ZLruCache<String,String> zLruCache = new ZLruCache<>(3);
            zLruCache.put("A","我是谁");
            zLruCache.put("B","我在哪里");
            zLruCache.put("C","我在干什么");
            zLruCache.get("A");
            zLruCache.put("D","我的天啊");
            zLruCache.put("E","我我我");
            zLruCache.get("B");
            System.out.print(zLruCache);
        }
    
    • 测试结果
    {A=我是谁, D=我的天啊, E=我我我}
    

    相关文章

      网友评论

          本文标题:Android-手写Lrucache

          本文链接:https://www.haomeiwen.com/subject/ukpijktx.html