2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

Java中如何利用泛型寫一個LRU緩存?

更新時間: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) {
        // 設置最大緩存大小
        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已經被刪除
    }
}

  在這個示例中,我們擴展了Java的LinkedHashMap類,并重寫了removeEldestEntry方法。當緩存的大小超過我們設定的最大值時,這個方法會返回true,從而刪除最舊的元素。這樣,我們就實現了一個LRU緩存。

分享到:
在線咨詢 我要報名
和我們在線交談!