用Java模拟页面置换算法LRU
时间: 2023-12-03 17:46:12 浏览: 60
LRU(Least Recently Used)是一种页面置换算法,它选择最近最少被使用的页面予以淘汰。下面是用Java实现LRU算法的示例代码:
```java
import java.util.LinkedHashMap;
import java.util.Map;
public class LRU {
private int capacity;
private Map<Integer, Integer> cache;
public LRU(int capacity) {
this.capacity = capacity;
this.cache = new LinkedHashMap<Integer, Integer>(capacity, 0.75f, true) {
protected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
return size() > capacity;
}
};
}
public int get(int key) {
return cache.getOrDefault(key, -1);
}
public void put(int key, int value) {
cache.put(key, value);
}
}
```
在这个实现中,使用了Java内置的LinkedHashMap作为缓存容器,它可以按照访问顺序保存键值对。在创建LinkedHashMap时,设置了accessOrder为true,表示按照访问顺序而非插入顺序来排序。同时,重写了removeEldestEntry方法,当缓存超过容量时,自动删除最老的数据。
LRU算法的核心是维护一个访问队列,每次访问一个页面时,将其移动到队列头部,淘汰页面时则选择队列尾部的页面。由于LinkedHashMap已经实现了访问队列,因此我们只需要修改其删除策略即可。