美文网首页
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