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;
// Math.ceil(double x) - 返回参数值的
int capacity = (int)Math.ceil(cacheSize/hashLoadFactory)+1;
map = new LinkedHashMap<K,V>(capacity,hashLoadFactory,true){
private static final long serialVersionUID = 1L;
@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();
}
}