LRU算法的研究
参考LRU的四种写法
https://blog.csdn.net/elricboa/article/details/78847305
public class LRU<K,V> {
private static final float hashLoadFactory = 0.75f;//负载阴子
private LinkedHashMap<K,V> map;
private int cacheSize;//缓存大小
public LRU(int cacheSize) {
this.cacheSize = cacheSize;
int capacity = (int)Math.ceil(cacheSize / hashLoadFactory) + 1;
map = new LinkedHashMap<K,V>(capacity, hashLoadFactory, true){
private static final long serialVersionUID = 1;
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > LRU.this.cacheSize;
}
};
}
public synchronized V get(K key) {
return map.get(key);
}
public synchronized void put(K key, V value) {
map.put(key, value);
}
public synchronized void clear() {
map.clear();
}
public synchronized int usedSize() {
return map.size();
}
public void print() {
for (Map.Entry<K, V> entry : map.entrySet()) {
System.out.print(entry.getValue() + “–”);
}
System.out.println();
}
}