我想建立一个快速的lru缓存。
这样的解决方案是个好办法吗?
同步呢?
有一个受保护的方法叫做removeeldestentry。将项添加到映射时调用此方法默认实现只返回false。但我可以对LinkedHashMap进行子类,并重写此方法来检查是否达到最大大小,然后返回true。LinkedHashMap将通过链接列表找到最旧的条目,并在添加新条目之前引导它。
public class MyLRUMap<K,V> extends LinkedHashMap<K,V> {
private int maxCapacity;
public MyLRUMap(int initialCapacity, float loadFactor, int maxCapacity) {
super(initialCapacity, loadFactor, true);
this.maxCapacity = maxCapacity;
}
@Override
protected boolean removeEldestEntry(Entry<K,V> eldest) {
return size() >= this.maxCapacity;
}
}
谢谢
最佳答案
这是推荐的方法,尽管最好是size() > this.maxCapacity
而不是>=