public class LRUCache extends LinkedHashMap <Integer,Integer>{
private int capacity;
public LRUCache(int capacity){
super(capacity,0.75f,true);
this.capacity=capacity;
}
public int get(int key){
return super.getOrDefault(key,-1);
}
public void put(int key,int value){
super.put(key,value);
}
@Override
protected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
return size()>capacity;
}
}
/**
* LRUCache 对象会以如下语句构造和调用:
* LRUCache obj=new LRUCache(capacity)
* int param_1=obj.get(key)
* obj.put(key,value)
*
* 时间复杂度:O(1),因为是有序字典
* 空间复杂度:O(capacity)
*/
LinkedHashMap实现LRU缓存机制
最新推荐文章于 2024-08-26 11:09:27 发布