利用泛型写一个 LRU 缓存

本文详细介绍了如何使用Java实现一个LRU(LeastRecentlyUsed)缓存,通过LinkedHashMap扩展并定制removeEldestEntry方法来控制缓存容量,以及get方法中更新访问顺序的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private int capacity;

    public LRUCache(int capacity) {
        super(capacity);
        this.capacity = capacity;
    }

    /**
     * 如果集合长度大于我们指定的容量,就把队尾也就是LRU(最近最少访问)的元素删掉
     * @param eldest
     * @return
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > capacity;
    }

    /**
     * 在获取元素时,把元素删除,重新添加,放在队尾,表示最新被访问的元素
     * @param key
     * @return
     */
    @Override
    public V get(Object key) {
        V v = super.get(key);
        this.remove(key);
        this.put((K) key, v);
        return v;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值