用Java写一个LRU置换算法
时间: 2023-06-11 16:04:31 浏览: 118
LRU(Least Recently Used)置换算法是一种常用的缓存置换算法,用于替换缓存中最近最少使用的页面。下面是Java代码实现LRU置换算法的示例:
```
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int capacity;
public LRUCache(int capacity) {
super(capacity, 0.75f, true);
this.capacity = capacity;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
public static void main(String[] args) {
LRUCache<String, Integer> cache = new LRUCache<>(3);
cache.put("a", 1);
cache.put("b", 2);
cache.put("c", 3);
System.out.println(cache);
cache.put("d", 4);
System.out.println(cache);
}
}
```
LRUCache类继承自LinkedHashMap,并重写了removeEldestEntry()方法,用于判断是否需要删除最老的元素。在LRUCache构造函数中,调用了父类构造函数,并传递了容量、负载因子、以及accessOrder参数。accessOrder参数为true时,表示采用访问顺序而不是插入顺序。
在main函数中,我们创建了一个容量为3的LRUCache对象,并插入了三个元素。输出cache对象时,会发现元素的顺序是访问的顺序。当插入第四个元素时,由于容量只有3个,最老的元素将被删除,即"a":1。最后再输出cache对象,可以看到"a":1已经被删除了。
这就是一个简单的LRU置换算法的Java实现,希望能解决您的问题。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)