概念
LRU (Least Recently Used)
的意思就是近期最少使用算法,它的核心思想就是会优先淘汰那些近期最少使用的缓存对象。
其他缓存算法还有:
-
FIFO (First In First Out)
先进先出。 -
LFU (Least Frequently Used)
这个是计算每个信息的访问次数,踢走访问次数最少的那个;如果访问次数一样,就踢走好久没用过的那个。 - 等等。
实现方式
LRUCache
的实现,我们可以使用哈希表+双向链表来完成。如果用java
实现,我们可以直接简单的使用LinkedHashMap
。
实现代码
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(java.util.Map.Entry<Integer, Integer> eldest) {
return size() > capacity;
}
}