LRU,即最近最少使用。LRU中保存的数据如果满了,那么就会将最近最少使用的数据删除。
LinkedHashMap通过使accessOrder为true,可以满足这种特性。代码如下:
package com.dbl.linkedlistmap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author dbl
* @ClassName lruDemo
* @Description
* @date 2022/07/05 14:45
*/
public class LruDemo<T> extends LinkedHashMap {
private int capacity;
public LruDemo(int capacity) {
super(capacity, 0.75f, true);
this.capacity = capacity;
}
public Object get(Object key) {
return super.getOrDefault(key, -1);
}
@Override
protected boolean removeEldestEntry(Map.Entry eldest) { //当存放数据 大于设定值 就会删除最近最少使用
return size() > capacity;
}
public static void main(String[] args) {
LruDemo<Object> objectLruDemo = new LruDemo<>(16);
objectLruDemo.put(1 >> 1,1);
objectLruDemo.put(1 >> 2,2);
objectLruDemo.put(1 >> 3,3);
objectLruDemo.put(1 >> 4,4);
objectLruDemo.put(1 >> 5,5);
objectLruDemo.put(1 >> 6,6);
System.out.println(objectLruDemo);
}
}
参考:https://blog.csdn.net/qq_40050586/article/details/105851970