要使用 LinkedHashMap
来实现LRU(最近最少使用)缓存,可以设置它的访问顺序为true
,以便在每次访问一个元素时,将它移到最后,从而实现LRU的特性。以下是一个简单的Java示例:文章来源:https://www.toymoban.com/news/detail-720147.html
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int MAX_CAPACITY;
public LRUCache(int capacity) {
super(capacity, 0.75f, true);
MAX_CAPACITY = capacity;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > MAX_CAPACITY;
}
public static void main(String[] args) {
LRUCache<Integer, String> lruCache = new LRUCache<>(3);
lruCache.put(1, "One");
lruCache.put(2, "Two");
lruCache.put(3, "Three");
System.out.println(lruCache); // 输出: {1=One, 2=Two, 3=Three}
lruCache.get(2); // 访问元素2
System.out.println(lruCache); // 输出: {1=One, 3=Three, 2=Two}
lruCache.put(4, "Four"); // 添加一个新元素
// 1最先放入
System.out.println(lruCache); // 输出: {3=Three, 2=Two, 4=Four}
lruCache.put(5, "Five"); // 添加一个新元素
// 2先放入但使用了一次,3紧随其后但没有使用
System.out.println(lruCache); // 输出: {2=Two, 4=Four, 5=Five}
}
}
在上面的示例中,创建了一个 LRUCache
类,它扩展了 LinkedHashMap
,并在构造函数中设置了访问顺序为true
,以便实现LRU缓存。重写了 removeEldestEntry
方法,以控制缓存的大小,如果缓存大小超过最大容量(MAX_CAPACITY
),则会移除最近最少使用的元素。文章来源地址https://www.toymoban.com/news/detail-720147.html
到了这里,关于LinkedHashMap 简单实现LRU的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!