实现自己的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=我我我}
网友评论