`

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

LRU 
阅读更多

实现代码如下:

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

 

 

 

 

5
3
分享到:
评论

相关推荐

    LRU(Least Recently Used, 最近最久未使用)算法。

    实现最近最久未使用(Least Recently Used, LRU)算法。含linux下可执行代码和windows下的工程文件。以及一份实验文档。

    LRU.rar_LRU_LRU2 算法_MRU_lru2

    LRU(最近最少使用算法) and MRU(最近最常使用算法)所谓的LRU(Least recently used)算法的基本概念是:当内存的剩余的可用空间不够时,缓冲区尽可能的先保留使用者最常使用的数据,换句话说就是优先清除”较不常使用的...

    LRU置换算法(C#语言)

    LRU是Least Recently Used最近最少使用算法,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的。

    LRU.rar_LRU

    基于JAVA的LRU(Least Recently Used 近期最少使用算法)算法实现

    lrucacheleetcode-LRU_Cache_Algorithm:用C++实现LRU缓存算法

    (LRU缓存算法) C++版本,适用于 ##LRU算法介绍 引自: Discards the least recently used items first. This algorithm requires keeping track of what was used when, which is expensive if one wants to make ...

    基于LRU算法源代码

    (2) LRU算法:LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。 优点:在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用...

    python-LRU缓存.zip

    “Python—LRU缓存.zip”是一个压缩文件,其中包含了使用Python实现的最近最少使用(Least Recently Used, LRU)缓存算法的代码和相关文档。LRU缓存算法是一种常用的缓存淘汰策略,它根据数据项最近被使用的时间来...

    置换算法OPT,FIFO,LRU

    随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求计算以下几种置换算法的缺页数、缺页率和命中率。 最佳置换算法OPT(Optimal) ...最近最少使用算法LRU(Least Recently Used)

    Python实现LRU算法的2种方法

    LRU:least recently used,最近最少使用算法。它的使用场景是:在有限的空间中存储对象时,当空间满时,会按一定的原则删除原有的对象,常用的原则(算法)有LRU,FIFO,LFU等。在计算机的Cache硬件,以及主存到...

    工程师必须了解的LRU缓存淘汰算法以及python实现过程

    LRU的英文全称是Least Recently Used,也即最不经常使用。我们看着好像挺迷糊的,其实这个含义要结合缓存一起使用。对于工程而言,缓存是非常非常重要的机制,尤其是在当下的互联网应用环境当中,起到的作用非常重要...

    Nodejs基于LRU算法实现的缓存处理操作示例

    LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的...

    各种内存管理算法实现

    随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求计算以下几种置换算法的缺页数、缺页率和命中率。  最佳置换算法OPT(Optimal) ... 最近最少使用算法LRU(Least Recently Used)

    c++实现的常见缓存算法和LRU

    前言 ... LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。 LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,

    python 实现 leetcode 各种问题 课程设计 代码

    最近最少使用(Least Recently Used) 最近最少频率使用缓存(LFU Cache) 线性同余生成器(Linear Congruential Generator) 最近最久未使用缓存(LRU Cache) 魔幻菱形模式(Magic Diamond Pattern) 最大子数组...

    内存管理,比较各种调度算法的优劣

    随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求计算以下几种置换算法的缺页数、缺页率和命中率。 最佳置换算法OPT(Optimal) 先进先出算法FIFO...最近最少使用算法LRU(Least Recently Used)

    Spark中一种高效RDD自主缓存替换策略研究

    由于并行计算框架Spark缓存替换算法的粗糙性,LRU(least recently used)算法并未考虑RDD的重复使用导致易把高重用数据块替换出内存且作业执行效率较低等问题。通过优化权重模型和改进替换策略,提出了一种高效RDD...

    操作系统实验三源代码加实验报告

    随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求计算以下几种置换算法的缺页数、缺页率和命中率。 最佳置换算法OPT(Optimal) 先进先出算法FIFO...最近最少使用算法LRU(Least Recently Used)

    浅谈Android LruCache的缓存策略

    因此LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些近期最少使用的缓存对象。采用LRU算法的缓存有两种:LrhCache和DisLruCache分别用于实现内存...

    操作系统内存管理实验报告及源代码

    随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求计算以下几种置换算法的缺页数、缺页率和命中率。... 最近最少使用算法LRU(Least Recently Used) 实验报告(含流程图及运行结果)&源代码

    LRUCache的实现原理及利用python实现的方法

    LRU(Least Recently Used)最近最少使用,最近有时间和空间最近的歧义,所以我更喜欢叫它近期最少使用算法。它的核心思想是,如果一个数据被访问过,我们有理由相信它在将来被访问的概率就越高。于是当LRU缓存达到...

Global site tag (gtag.js) - Google Analytics