`

LinkedHashMap 最远未被使用丢弃缓存算法Least Recently used

阅读更多
直接贴代码

类:Test
类: LeastRecentlyUsedLinkedHashMap<K,V>


import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Test {
public static void main(String[] args) {
/**
* LinkedHashMap 实现了Least Recently used 最远未被使用丢弃缓存算法
* :在固定大小的LinkedHashMap中如果容量大于了 size() 将丢弃最远时间未被使用的key value 是一种缓存算法
*/

LeastRecentlyUsedLinkedHashMap<String, String> lruMap = new
LeastRecentlyUsedLinkedHashMap<String, String>(5);
lruMap.put("1", "a");
lruMap.put("2", "ab");
lruMap.put("3", "abc");
lruMap.put("4", "abcd");
lruMap.put("5", "abcde");
lruMap.put("6", "abcdef");
lruMap.put("7", "abcdefg");

printMapContent(lruMap);

System.out.println("\n");
lruMap.get("3");
printMapContent(lruMap);

System.out.println("\n");
lruMap.put("8", "xxxxxx");
printMapContent(lruMap);

}

/**
* map循环
* @param lruMap
*/
public static void printMapContent(LeastRecentlyUsedLinkedHashMap lruMap){

Set<Map.Entry<String,String>>  entrySet = lruMap.entrySet();

Iterator iter = entrySet.iterator();

Map.Entry<String,String> entry = null;

while(iter.hasNext()){
entry = (Entry<String, String>) iter.next();
System.out.println("key: " + entry.getKey()+"  value: " +entry.getValue());
}
}
}



LRU算法实现类:


public class LeastRecentlyUsedLinkedHashMap<K,V> extends LinkedHashMap<K,V> {

/**
*
*/
private static final long serialVersionUID = 1L;

/*指定map规定缓存容器长度*/
private int capacity;

LeastRecentlyUsedLinkedHashMap(int capacity){
super(capacity,0.75f,true);
this.capacity = capacity;
}


protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return size()> capacity;
}

}


分享到:
评论

相关推荐

    Android图片缓存算法的代码例子

    自定义的ImageCache类通常基于LRU(Least Recently Used)策略,这是一种常用的内存管理策略。当内存不足时,最近最少使用的数据会被首先移除。在ImageCache中,我们会维护一个内存缓存,将图片数据存储为Bitmap对象...

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

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

    Lru算法缓存解决图片OOM

    LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在Android开发中,由于内存有限,处理大量图片可能导致内存...

    java LRU(Least Recently Used )详解及实例代码

    LRU(Least Recently Used)是一种常用的缓存淘汰策略,其核心思想是:当缓存容量达到上限时,优先淘汰最近最少使用的数据。在Java中,实现LRU缓存有两种常见方式,分别是使用`LinkedHashMap`和自定义数据结构,如...

    ImageLoaderDemo图片三级缓存

    在图片加载中,内存缓存通常用于存储最近使用或最常使用的图片,当内存空间不足时,根据LRU(Least Recently Used)算法自动删除最近最少使用的图片,以保证缓存的高效运行。LRU策略有助于保持较高的缓存命中率,...

    Android图片缓存之Lru算法(二)

    LRU(Least Recently Used)算法是一种常用的缓存淘汰策略,它遵循“最近最少使用”的原则,即当缓存容量达到上限时,优先淘汰最久未使用的数据。 Android中的LRU算法通常被用来管理内存和磁盘上的图片缓存。在内存...

    实现了LRU算法的缓存

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

    实现 LRU 算法,和 Caffeine 和 Redis 中的缓存淘汰策略.docx

    LRU (Least Recently Used) 算法是一种常用的缓存淘汰策略,它的核心思想是优先淘汰最近最少使用的数据。在计算机系统中,由于内存资源有限,当缓存内容达到最大容量时,必须采取一定的策略来决定哪些数据应该被移除...

    LinkedHashmap的使用

    2. 需要按最近使用(LRU)策略进行缓存淘汰时,LinkedHashMap可以方便地根据访问顺序实现。 总的来说,LinkedHashMap结合了HashMap的高效性和有序性的特点,适用于那些对元素顺序有特定需求但又希望保持高效性能的...

    Android使用LruCache缓存图片

    `LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制,常用于图片、数据等对象的缓存,以减少磁盘读取和网络加载的次数。本文将详细介绍如何在Android应用中使用`LruCache...

    缓存面试题大全 pdf版

    - **LRU (Least Recently Used)**:最近最少使用算法,当缓存满时,移除最近最少被访问的数据。 - **LFU (Least Frequently Used)**:最不经常使用算法,根据数据项的访问频率来决定哪些应该被淘汰。 - **FIFO ...

    LRU算法四种实现方式介绍.docx

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

    Java实现LRU缓存机制:深入解析与高效编码实践

    在计算机科学中,LRU(Least Recently Used)缓存机制是一种常见的缓存淘汰策略,它基于“最近最少使用”的原则来淘汰数据。在Java中实现LRU缓存机制,不仅可以帮助我们更好地理解和应用数据结构,还能在实际开发中...

    Java实现LRU算法.zip

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

    三级缓存demo

    首先,LruCache(Least Recently Used Cache)是Android SDK提供的一种基于最近最少使用算法(LRU)的内存缓存。LRU策略的基本思想是,如果一个数据最近被访问过,那么它未来被访问的可能性较高。因此,当内存空间...

    高速缓存实现源码

    此外,缓存策略还包括了失效机制,例如LRU(Least Recently Used)最近最少使用和LFU(Least Frequently Used)最不经常使用。LRU会淘汰最近最少使用的数据,而LFU则是淘汰使用频率最低的数据。在Java中,可以使用...

    仿网易新闻的缓存机制,完成图片缓存,并在断网的情况下依旧可以查看图片

    这些库都内置了高效的缓存策略,包括LRU(Least Recently Used)算法来管理内存缓存,以及基于文件名的磁盘缓存策略。当图片请求被发起时,它们会首先查找内存缓存,如果找不到再查询磁盘缓存,最后如果两者都没有,...

    java实现操作系统的各个置换算法

    4. **最近最久未使用(Least Recently Used,LRU)算法**: LRU算法是基于页面的历史访问频率来进行决策的。它认为最近被访问的页面在未来最有可能再次被访问,因此优先保留这些页面。在Java中,可以使用HashMap或...

    LRU_缓存策略_LRU_缓存.zip

    LRU(Least Recently Used)缓存策略是一种广泛应用于计算机系统中的内存管理算法,它通过将最近最少使用的数据优先淘汰来优化缓存的性能。在内存有限的情况下,LRU策略能够尽可能保留最近常用的数据,提高数据访问...

    LruCache缓存

    LRU(Least Recently Used)缓存是一种常用的内存管理策略,用于在有限的内存资源中高效地存储和访问数据。在Android开发中,`LruCache`是Google提供的一种基于LRU算法实现的缓存机制,它被广泛应用于图片、数据库...

Global site tag (gtag.js) - Google Analytics