使用LinkedHashMap实现LRU算法

package leetcode.LRU;
import java.util.LinkedHashMap;
import java.util.Map;
/**
 * Introduction:
 * LRU是Least Recently Used的缩写,
 * 即最近最少使用,是一种常用的页面置换算法,
 * 选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,
 * 用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,
 * 选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
 */
public class LRUByLinkedHashMap<K,V> extends LinkedHashMap<K, V> implements Map<K, V>{
    private static final long serialVersionUID = 1L;
    public LRUByLinkedHashMap(int initialCapacity,
             float loadFactor,
                        boolean accessOrder) {
        super(initialCapacity, loadFactor, accessOrder);
    }
 
    @Override
    protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
        if(size() > 6){
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        LRUByLinkedHashMap<Character, Integer> lru = new LRUByLinkedHashMap<Character, Integer>(
                16, 0.75f, true);
        String s = "abcdefg";
        for (int i = 0; i < s.length(); i++) {
            lru.put(s.charAt(i), i);
        }
        System.out.println("LRU中key为d的Entry的值为: " + lru.get('d'));
        System.out.println("LRU的大小 :" + lru.size());
        System.out.println("LRU :" + lru);
    }
}
/**
 * 执行过程
 * a
 * ab
 * abc
 * abcd
 * abcde
 * abcdef
 * bcdefg
 * bcefgd
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值