LruCache(Least Recently Used Cache)是最近最少使用缓存。这种缓存能按照每个元素最近的使用情况维护元素的顺序,有一定的容量限制,并能在容量超出限制时自动删除最少使用的元素。
java中的LinkedHashMap是一种能实现LruCache的数据结构。LinkedHashMap也像一般的Map一样其元素是以键值对<K, V>的形式按照哈希算法存储的,但是不同于一般的HashMap,其元素也是链表中的一个结点,而元素的值是存在这个结点中的。
基于LinkedHashMap数据结构,我们可以实现LruCache:每次有get或者put操作,此元素会被放到链表的头结点,当缓存容量超过上限时,删除链表尾的元素。
java代码实现:
import java.util.LinkedHashMap;
import java.util.Map;
public class LruCache<K, V> extends LinkedHashMap {
private int cacheSize;
public LruCache(int cacheSize) {
super(16, 0.75f, true);
this.cacheSize = cacheSize;
}
@Override
protected boolean removeEldestEntry(Map.Entry entry) {
return size() > cacheSize;
}
}