更新時間:2023-10-10 來源:黑馬程序員 瀏覽量:
在Java中,我們可以利用泛型來編寫一個LRU緩存。以下是一個簡單的示例:
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int MAX_SIZE;
public LRUCache(int maxSize) {
// 設(shè)置最大緩存大小
super(maxSize + 1, 1.0f, true);
MAX_SIZE = maxSize;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > MAX_SIZE;
}
public static void main(String[] args) {
LRUCache<Integer, String> lruCache = new LRUCache<>(3);
lruCache.put(1, "one");
lruCache.put(2, "two");
lruCache.put(3, "three");
System.out.println(lruCache.get(1)); // 輸出: one
lruCache.put(4, "four"); // 此時緩存中存在1, 2, 4,3被刪除
System.out.println(lruCache.get(3)); // 輸出: null,因為3已經(jīng)被刪除
}
}
在這個示例中,我們擴展了Java的LinkedHashMap類,并重寫了removeEldestEntry方法。當(dāng)緩存的大小超過我們設(shè)定的最大值時,這個方法會返回true,從而刪除最舊的元素。這樣,我們就實現(xiàn)了一個LRU緩存。