更新時間: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,因?yàn)?已經(jīng)被刪除 } }
在這個示例中,我們擴(kuò)展了Java的LinkedHashMap類,并重寫了removeEldestEntry方法。當(dāng)緩存的大小超過我們設(shè)定的最大值時,這個方法會返回true,從而刪除最舊的元素。這樣,我們就實(shí)現(xiàn)了一個LRU緩存。