`

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, 最近最久未使用)算法。

    LRU(Least Recently Used,最近最久未使用)算法是一种常用的缓存淘汰策略。在计算机科学中,当有限的内存空间需要为新数据提供存储时,LRU算法会选择最近最久未使用的数据进行删除,以确保最新或最常用的数据能够...

    Java实现LRU算法.zip

    LRU(Least Recently Used)算法是一种常见的页面替换算法,用于解决计算机内存有限而数据页数量过多的问题。在操作系统中,当内存不足以容纳所有活动页面时,LRU算法会选择最近最久未使用的页面进行淘汰,以腾出...

    LRU算法实现LRU算法实现LRU算法实现LRU算法实现LRU算法实现

    LRU(Least Recently Used)算法是一种常用的缓存淘汰算法,目标是在缓存中选择最近最久未使用的页面予以置换。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历的时间T,当须淘汰一个页面时...

    LRU算法 java实现

    LRU(Least Recently Used)算法是一种常用的页面替换策略,用于管理有限的缓存资源。当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在Java中,我们可以使用数据结构如HashMap和LinkedList来实现LRU缓存。 ...

    c语言实现的LRU算法

    LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被访问过的页面优先被淘汰。在C语言中实现LRU算法,需要理解数据结构和算法的基础知识,...

    LRU算法LRU算法LRU算法LRU算法

    LRU(Least Recently Used,最近最少使用)是一种常用的页面替换算法,用于解决计算机内存不足时如何选择淘汰数据的问题。在缓存或者数据库管理系统中,LRU算法被广泛应用,因为它的实现简单且效果良好。 LRU算法的...

    东南大学操作系统实验——实现LRU算法及其近似算法

    在本实验中,学生将深入理解操作系统的内存管理机制,特别是LRU(Least Recently Used,最近最少使用)页面置换算法。LRU算法是一种常见的虚拟内存管理策略,它根据页面的使用历史来决定替换哪个页面。当内存中的...

    Lru.rar_Least Recently Used_page

    Least Recently Used(LRU)页面替换算法是操作系统内存管理中的一个重要策略,用于决定在物理内存不足时哪些进程的页面应该被换出到磁盘。这个算法基于一个假设:最近经常使用的页面在未来也更可能被频繁访问。因此...

    LRU页面置换算法(Java)

    通过Java实现的LRU算法可以灵活地调整容量,适应不同的应用场景,并且通过策略模式,可以方便地切换到其他的页面置换算法,如LFU(Least Frequently Used,最不经常使用)等。 总的来说,LRU页面置换算法是解决内存...

    操作系统之LRU算法(java)(csdn)————程序.pdf

    LRU(Least Recently Used,最近最少使用)算法是一种常用的页面置换算法,用于操作系统中管理内存页面。该算法的基本思想是:当进程在 CPU 上运行时,如指令中涉及逻辑地址时,操作系统自动根据页表得到页号相关...

    LRU算法 C++实现

    LRU(Least Recently Used)算法是一种常用的页面替换算法,用于解决计算机内存有限而数据需求量大的问题。在操作系统中,当内存不足以容纳所有活动进程的数据时,LRU算法会被用来决定哪些页面应该被换出到磁盘上,...

    LRU.rar_LRU_LRU java_lru.java

    LRU(Least Recently Used)是最常用的页面替换算法之一,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在这个Java实现的LRU算法示例中,我们将深入探讨LRU的核心概念、...

    LRU.rar_LRU_lru 算法_lru算法

    LRU(Least Recently Used)算法是一种常用的页面替换策略,在操作系统中用于解决内存不足的问题,特别是在虚拟内存系统中。当物理内存不足以容纳所有运行程序时,操作系统需要决定哪些数据应该被换出到磁盘上,哪些...

    一个LRU算法的实现

    LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在操作系统、数据库管理系统和缓存系统等领域,LRU算法都有...

    缓存淘汰算法之LRU

    其中,LRU(Least Recently Used,最近最少使用)算法是一种常用的缓存淘汰算法。 1. LRU 算法原理 LRU 算法的核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。因此,LRU 算法根据数据的历史...

    lru算法C语言实现

    LRU(Least Recently Used,最近最少使用)算法是一种常用的数据缓存淘汰策略,在计算机科学领域应用广泛,尤其是在操作系统、数据库管理和Web服务器缓存管理等方面。本文将详细介绍一个用C语言实现的LRU算法示例...

    LRU算法 lru算法

    LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则来决定何时替换内存中的页面。在计算机系统中,由于物理内存有限,当程序需要的内存超过实际可用内存时,操作系统会将部分...

    LRU算法的自编c++实现及源码。 .rar_LRU_lru算法

    LRU(Least Recently Used)算法是一种常用的页面替换算法,用于解决计算机内存有限而数据存储量大时的问题。在操作系统和数据库管理系统中,LRU被广泛应用于缓存管理,当内存空间不足时,它会选择最近最少使用的...

    实现了LRU算法的缓存

    LRU(Least Recently Used)算法是一种常用的页面替换策略,用于管理有限的缓存资源。当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在这个Java实现的LRU缓存中,我们可能会看到以下几个关键知识点: 1. **...

    LRU页面置换算法

    LRU(Least Recently Used,最近最少使用)页面置换算法是一种常用的内存管理策略,它用于解决在有限的物理内存中管理大量虚拟内存页的问题。当内存不足时,LRU算法会淘汰那些最近最少使用的页面,以腾出空间供新...

Global site tag (gtag.js) - Google Analytics