Java实现LRU算法
时间: 2023-10-25 14:09:12 浏览: 96
LRU(Least Recently Used)算法是一种缓存淘汰算法,它会优先淘汰最近最少使用的缓存数据。Java中可以通过LinkedHashMap类来实现LRU算法,具体实现方法如下:
```java
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private int cacheSize;
public LRUCache(int cacheSize) {
super(16, 0.75f, true);
this.cacheSize = cacheSize;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > cacheSize;
}
}
```
在LRUCache类中,我们继承了LinkedHashMap类,并在构造方法中指定了初始容量为16,负载因子为0.75,以及accessOrder参数为true,这样就可以开启LRU模式。
重写了removeEldestEntry方法,判断当缓存大小超过了cacheSize时,就淘汰最近最少使用的缓存数据。
使用时,可以通过以下代码创建一个LRUCache对象:
```java
LRUCache<String, String> cache = new LRUCache<>(10);
```
其中10表示缓存的最大容量。然后可以通过put方法存入数据,通过get方法取出数据。当缓存数据达到10条时,就会自动淘汰最近最少使用的数据。
阅读全文