public class LRUCacheDemo {
int cap;
//利用有序的map来存贮元素
Map<Integer, Integer> map = new LinkedHashMap<>();
//初始化容量上限
public LRUCacheDemo(int capacity) {
this.cap = capacity;
}
public int get(int key) {
//如果map中包含这个元素,则取出元素并把元素加入linkedHashMap的最后
//如果不包含这个元素,则返回-1
if (map.keySet().contains(key)) {
Integer value = map.get(key);
map.remove(key);
map.put(key, value);
return value;
}
return -1;
}
public void set(int key, int value) {
//判断集合中是否已经存在该元素
if (map.containsKey(key)) {
map.remove(key);
} else if (map.size() == cap) {
//map中的容量达到上限后
map.remove(map.entrySet().iterator().next().getKey());
}
map.put(key, value);
}
}
LRU算法(最近最少使用)的简单实现
最新推荐文章于 2025-01-18 13:47:29 发布