Android-手写Lrucache

2020-08-24  本文已影响0人  有腹肌的豌豆Z

实现自己的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=我我我}
上一篇 下一篇

猜你喜欢

热点阅读