【发布时间】:2023-04-07 16:12:01
【问题描述】:
我想构建一个快速的 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;
}
}
谢谢
【问题讨论】:
标签: java algorithm caching lru