实现代码如下:
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,最近最久未使用)算法是一种常用的缓存淘汰策略。在计算机科学中,当有限的内存空间需要为新数据提供存储时,LRU算法会选择最近最久未使用的数据进行删除,以确保最新或最常用的数据能够...
LRU(Least Recently Used)算法是一种常见的页面替换算法,用于解决计算机内存有限而数据页数量过多的问题。在操作系统中,当内存不足以容纳所有活动页面时,LRU算法会选择最近最久未使用的页面进行淘汰,以腾出...
LRU(Least Recently Used)算法是一种常用的页面替换策略,用于管理有限的缓存资源。当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在Java中,我们可以使用数据结构如HashMap和LinkedList来实现LRU缓存。 ...
LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被访问过的页面优先被淘汰。在C语言中实现LRU算法,需要理解数据结构和算法的基础知识,...
在本实验中,学生将深入理解操作系统的内存管理机制,特别是LRU(Least Recently Used,最近最少使用)页面置换算法。LRU算法是一种常见的虚拟内存管理策略,它根据页面的使用历史来决定替换哪个页面。当内存中的...
Least Recently Used(LRU)页面替换算法是操作系统内存管理中的一个重要策略,用于决定在物理内存不足时哪些进程的页面应该被换出到磁盘。这个算法基于一个假设:最近经常使用的页面在未来也更可能被频繁访问。因此...
通过Java实现的LRU算法可以灵活地调整容量,适应不同的应用场景,并且通过策略模式,可以方便地切换到其他的页面置换算法,如LFU(Least Frequently Used,最不经常使用)等。 总的来说,LRU页面置换算法是解决内存...
LRU(Least Recently Used,最近最少使用)算法是一种常用的页面置换算法,用于操作系统中管理内存页面。该算法的基本思想是:当进程在 CPU 上运行时,如指令中涉及逻辑地址时,操作系统自动根据页表得到页号相关...
LRU(Least Recently Used)算法是一种常用的页面替换算法,用于解决计算机内存有限而数据需求量大的问题。在操作系统中,当内存不足以容纳所有活动进程的数据时,LRU算法会被用来决定哪些页面应该被换出到磁盘上,...
LRU(Least Recently Used)是最常用的页面替换算法之一,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在这个Java实现的LRU算法示例中,我们将深入探讨LRU的核心概念、...
LRU(Least Recently Used,最近最少使用)是一种常用的页面替换算法,用于解决计算机内存不足时如何选择淘汰数据的问题。在缓存或者数据库管理系统中,LRU算法被广泛应用,因为它的实现简单且效果良好。 LRU算法的...
LRU(Least Recently Used)算法是一种常用的页面替换策略,在操作系统中用于解决内存不足的问题,特别是在虚拟内存系统中。当物理内存不足以容纳所有运行程序时,操作系统需要决定哪些数据应该被换出到磁盘上,哪些...
LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在操作系统、数据库管理系统和缓存系统等领域,LRU算法都有...
其中,LRU(Least Recently Used,最近最少使用)算法是一种常用的缓存淘汰算法。 1. LRU 算法原理 LRU 算法的核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。因此,LRU 算法根据数据的历史...
LRU(Least Recently Used,最近最少使用)算法是一种常用的数据缓存淘汰策略,在计算机科学领域应用广泛,尤其是在操作系统、数据库管理和Web服务器缓存管理等方面。本文将详细介绍一个用C语言实现的LRU算法示例...
LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则来决定何时替换内存中的页面。在计算机系统中,由于物理内存有限,当程序需要的内存超过实际可用内存时,操作系统会将部分...
LRU(Least Recently Used)算法是一种常用的页面替换算法,用于解决计算机内存有限而数据存储量大时的问题。在操作系统和数据库管理系统中,LRU被广泛应用于缓存管理,当内存空间不足时,它会选择最近最少使用的...
LRU(Least Recently Used)算法是一种常用的页面替换策略,用于管理有限的缓存资源。当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在这个Java实现的LRU缓存中,我们可能会看到以下几个关键知识点: 1. **...
LRU(Least Recently Used,最近最少使用)页面置换算法是一种常用的内存管理策略,它用于解决在有限的物理内存中管理大量虚拟内存页的问题。当内存不足时,LRU算法会淘汰那些最近最少使用的页面,以腾出空间供新...
LRU(Least Recently Used)是最常用的页面替换算法之一,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在Java中实现LRU算法,通常会用到数据结构如哈希表和双向链表。...