LRU实现

3人阅读 评论(0) 收藏 举报
分类:

使用LinkedHashMap,特性是插入有序
重写removeEldestEntry(Map.Entry eldest)方法

/**
     * Returns <tt>true</tt> if this map should remove its eldest entry.
     * This method is invoked by <tt>put</tt> and <tt>putAll</tt> after
     * inserting a new entry into the map.  It provides the implementor
     * with the opportunity to remove the eldest entry each time a new one
     * is added.  This is useful if the map represents a cache: it allows
     * the map to reduce memory consumption by deleting stale entries.
     *
     * <p>Sample use: this override will allow the map to grow up to 100
     * entries and then delete the eldest entry each time a new entry is
     * added, maintaining a steady state of 100 entries.
     * <pre>
     *     private static final int MAX_ENTRIES = 100;
     *
     *     protected boolean removeEldestEntry(Map.Entry eldest) {
     *        return size() &gt; MAX_ENTRIES;
     *     }
     * </pre>
     */

代码

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

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private int cacheSize;

    public LRUCache(int cacheSize) {
        super(16, 0.75f, true);
        this.cacheSize = cacheSize;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > cacheSize;
    }
}
查看评论

LRU算法四种实现方式介绍

LRU全称是Least Recently Used,即最近最久未使用的意思。 LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间...
  • elricboa
  • elricboa
  • 2017-12-19 20:58:58
  • 1992

LRU Cache 实现

LRU Cashe实现 LeetCode上有着样一道题目: Design and implement a data structure for Least Recently Used (LRU) ...
  • doufei_ccst
  • doufei_ccst
  • 2014-04-07 11:58:54
  • 8495

Java算法--LRU算法实现示例

原文地址:http://www.cnblogs.com/lzrabbit/p/3734850.html LRU算法,即Last Recently Used ---选择最后一次访问时间距离当前时...
  • tanga842428
  • tanga842428
  • 2016-10-14 20:21:00
  • 1423

用C语言的堆栈实现LRU算法

  • 2010年01月07日 18:17
  • 169KB
  • 下载

Java实现LRU算法

用Java实现最近最少使用算法,代码如下: import java.util.LinkedHashMap; import java.util.Map; /** * LRU (Least Rec...
  • tanga842428
  • tanga842428
  • 2016-08-13 15:21:07
  • 728

LRU算法的实现

  LRU算法的实现 什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节省利用容量不大的内...
  • Ackarlix
  • Ackarlix
  • 2007-08-26 21:02:00
  • 26844

如何用LinkedHashMap实现LRU缓存算法

阿里巴巴笔试考到了LRU,一激动忘了怎么回事了。。准备不充分啊。。 缓存这个东西就是为了提高运行速度的,由于缓存是在寸土寸金的内存里面,不是在硬盘里面,所以容量是很有限的。LRU这个算法就是把最近一次...
  • Derek_BMW
  • Derek_BMW
  • 2013-09-15 20:18:06
  • 14642

剖析LRU算法及LinkedHashMap源码实现机制

一、简述 LRU(Least Recently Used),注意L代表的不是Latest,翻译成中文通常叫:近期最少使用算法、最近最少使用算法。LRU与LFU(Least Frequently ...
  • u013400939
  • u013400939
  • 2016-07-06 22:56:55
  • 1108

LinkedList实现基于LRU算法的缓存

学过操作系统的人都知道LRU页面切换算法,其实这个算法不仅仅只是能在页面切换中应用到,在缓存中也有很实际的应用。最典型的实现方式是采用LinkedHashMap来实现这个缓存,大家可以在Java源码里...
  • u011763190
  • u011763190
  • 2015-08-07 18:18:45
  • 1332

设计并实现一个LRU Cache

一、什么是Cache1 概念Cache,即高速缓存,是介于CPU和内存之间的高速小容量存储器。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近CPU的...
  • lisong694767315
  • lisong694767315
  • 2015-05-09 15:17:04
  • 3205
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 1208
    排名: 4万+
    最新评论