LRU算法用Java实现
时间: 2024-11-05 18:34:46 浏览: 18
在Java中实现LRU算法,一种常见的方式是使用`java.util.LinkedHashMap`类,因为LinkedHashMap内部已经实现了LRU的逻辑。当容量达到最大值时,它会按照访问顺序从头部开始删除元素,即最近最少使用的元素会被最先移除。
下面是一个简单的示例:
```java
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> {
private final int capacity;
private LinkedHashMap<K, V> map;
public LRUCache(int capacity) {
this.capacity = capacity;
map = new LinkedHashMap<>(capacity, 0.75f, true) {
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
};
}
public V get(K key) {
return map.get(key);
}
public void put(K key, V value) {
map.put(key, value);
}
}
```
在这个例子中,`removeEldestEntry()`方法是在插入新键值对时被自动调用的,如果当前缓存大小超过容量,它就会返回true,导致最旧的(最近最少使用的)键值对被移除。
阅读全文