用Java实现简单的lru
时间: 2024-03-14 11:46:52 浏览: 63
好的,以下是用Java实现简单的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;
}
public static void main(String[] args) {
LRUCache<Integer, String> cache = new LRUCache<>(2);
cache.put(1, "one");
cache.put(2, "two");
System.out.println(cache);
cache.get(1);
System.out.println(cache);
cache.put(3, "three");
System.out.println(cache);
}
}
```
在这个LRU缓存实现中,我们继承了Java的LinkedHashMap类,并重写了它的removeEldestEntry方法。该方法会在每次添加新元素后被调用,如果当前缓存的大小超过了设定的最大值,则会自动删除最近最少使用的元素,保持缓存的大小不超过最大值。
在main方法中,我们创建了一个大小为2的缓存,首先添加了两个元素1和2,然后调用了get方法获取了元素1,这个操作会使得元素1成为最近访问的元素,最后再添加了一个元素3,由于缓存已满,会自动删除最近最少使用的元素2,使得缓存中的元素为1和3。
希望能够帮到你!
阅读全文