用Java实现一个Lru
时间: 2024-02-09 09:12:10 浏览: 101
好的,我可以帮你实现一个Java版的Lru缓存。
Lru(Least Recently Used)缓存是一种常见的缓存策略,它会删除最近最少使用的缓存项。在Java中,我们可以使用LinkedHashMap来实现一个Lru缓存,因为LinkedHashMap本身就是一个有序的Map,而且可以通过覆写removeEldestEntry方法来实现自动删除最近最少使用的缓存项。
以下是一个简单的Java实现:
```java
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
public boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
}
```
这个LruCache类继承自LinkedHashMap,并覆写了removeEldestEntry方法,当缓存项数量超过capacity时,就会自动删除最近最少使用的缓存项。我们可以使用put方法向缓存中添加缓存项,使用get方法获取缓存项,使用size方法获取缓存项数量。
示例代码:
```java
LruCache<String, Integer> cache = new LruCache<>(2);
cache.put("a", 1);
cache.put("b", 2);
System.out.println(cache.get("a")); // 1
cache.put("c", 3);
System.out.println(cache.get("b")); // null
cache.put("d", 4);
System.out.println(cache.get("a")); // null
System.out.println(cache.get("c")); // 3
System.out.println(cache.get("d")); // 4
```
在上面的示例中,我们创建了一个容量为2的LruCache,向其中添加了三个缓存项,当缓存项数量超过容量时,会自动删除最近最少使用的缓存项,所以最终缓存中只剩下了"c"和"d"。
阅读全文