当前位置:首页 > 开发 > 编程语言 > 算法 > 正文

LRU (Least Recently Used) 算法的Java实现

发表于: 2015-07-15   作者:yangshangchuan   来源:转载   浏览:
LRU
摘要: 实现代码如下: import java.util.LinkedHashMap; import java.util.Map; /** * LRU (Least Recently Used) 算法的Java实现 * @param <K> * @param <V> * @author 杨尚川 */ public class LRUCache<

实现代码如下:

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * LRU (Least Recently Used) 算法的Java实现
 * @param <K>
 * @param <V>
 * @author 杨尚川
 */
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    //缓存大小
    private int cacheSize;

    public LRUCache(int cacheSize) {
        //第三个参数true是关键
        super(10, 0.75f, true);
        this.cacheSize = cacheSize;
    }

    /**
     * 缓存是否已满的判断
     * @param eldest
     * @return
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        boolean r = size() > cacheSize;
        if(r){
            System.out.println("清除缓存:"+eldest.getKey());
        }
        return r;
    }

    public static void main(String[] args) {
        LRUCache<String, String> cache = new LRUCache<>(5);
        cache.put("1", "1");
        cache.put("2", "2");
        cache.put("3", "3");
        cache.put("4", "4");
        cache.put("5", "5");

        System.out.println("初始:");
        cache.keySet().forEach(k -> System.out.println(k));
        System.out.println("访问2:");
        cache.get("2");
        cache.keySet().forEach(k -> System.out.println(k));
        System.out.println("访问2、3:");
        cache.get("2");
        cache.get("3");
        cache.keySet().forEach(k -> System.out.println(k));
        System.out.println("增加数据6、7:");
        cache.put("6", "6");
        cache.put("7", "7");
        cache.keySet().forEach(k -> System.out.println(k));
    }
}

 

 

运行结果如下:

初始:
1
2
3
4
5
访问2:
1
3
4
5
2
访问2、3:
1
4
5
2
3
增加数据6、7:
清除缓存:1
清除缓存:4
5
2
3
6
7

 

 

 

 

LRU (Least Recently Used) 算法的Java实现

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
09年9月28日,参加东软高端就业笔试,专业笔试关于缓存调度算法,由于事先没有准备,仓惶作答,漏洞
基于LRU算法的缓存实现 林小应 1. 问题描述 业务系统中,可能会用到很多规格数据。如果每次都从数据
在参考https://code.google.com/p/imgwarp-opencv/的基础上,把mls图像变形算法进行了实现,但感觉
在我们的手机应用开发时候,我们经常会遇到大数据访问的时候,我们通常会考虑以下几个方面的情况。
1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰
1.LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰
前一段时间2014北京PyCon大会吐槽颇多,所以我就到InfoQ上找了找2013的大会视频,对网络射击手游Hig
前言 今天面试被新浪一个很帅的师兄问到了memcached的LRU源码实现,结果我扯了一堆如何用redis实现L
原理: LRU(最近最少使用)算法根据数据的访问频率,将最近访问的放在队头,将最少访问的放在队尾
1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号