用Java实现简单的lru,固定长度为10
时间: 2024-03-14 21:46:54 浏览: 77
好的,以下是用Java实现固定长度为10的LRU算法:
```java
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private static final int MAX_ENTRIES = 10;
public LRUCache() {
super(MAX_ENTRIES, 0.75f, true);
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > MAX_ENTRIES;
}
public static void main(String[] args) {
LRUCache<Integer, String> cache = new LRUCache<>();
cache.put(1, "one");
cache.put(2, "two");
cache.put(3, "three");
cache.put(4, "four");
cache.put(5, "five");
cache.put(6, "six");
cache.put(7, "seven");
cache.put(8, "eight");
cache.put(9, "nine");
cache.put(10, "ten");
System.out.println(cache);
cache.put(11, "eleven");
System.out.println(cache);
}
}
```
在这个LRU缓存实现中,我们同样继承了Java的LinkedHashMap类,并重写了它的removeEldestEntry方法。这次我们将缓存的最大大小设置为10,当缓存中元素的数量超过10时,就会自动删除最近最少使用的元素,保持缓存的大小不超过10。
在main方法中,我们首先添加了10个元素,然后再添加了一个新元素11,由于缓存已满,会自动删除最近最少使用的元素1,使得缓存中的元素为2到11。
希望能够帮到你!
阅读全文