直接贴代码
类: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;
}
}
分享到:
相关推荐
自定义的ImageCache类通常基于LRU(Least Recently Used)策略,这是一种常用的内存管理策略。当内存不足时,最近最少使用的数据会被首先移除。在ImageCache中,我们会维护一个内存缓存,将图片数据存储为Bitmap对象...
LRU(Least Recently Used,最近最少使用)是一种常用的页面替换算法,用于解决计算机内存不足时如何选择淘汰数据的问题。在缓存或者数据库管理系统中,LRU算法被广泛应用,因为它的实现简单且效果良好。 LRU算法的...
LRU(Least Recently Used)算法是一种常用的页面替换策略,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在Android开发中,由于内存有限,处理大量图片可能导致内存...
LRU(Least Recently Used)是一种常用的缓存淘汰策略,其核心思想是:当缓存容量达到上限时,优先淘汰最近最少使用的数据。在Java中,实现LRU缓存有两种常见方式,分别是使用`LinkedHashMap`和自定义数据结构,如...
在图片加载中,内存缓存通常用于存储最近使用或最常使用的图片,当内存空间不足时,根据LRU(Least Recently Used)算法自动删除最近最少使用的图片,以保证缓存的高效运行。LRU策略有助于保持较高的缓存命中率,...
LRU(Least Recently Used)算法是一种常用的缓存淘汰策略,它遵循“最近最少使用”的原则,即当缓存容量达到上限时,优先淘汰最久未使用的数据。 Android中的LRU算法通常被用来管理内存和磁盘上的图片缓存。在内存...
LRU(Least Recently Used)算法是一种常用的页面替换策略,用于管理有限的缓存资源。当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在这个Java实现的LRU缓存中,我们可能会看到以下几个关键知识点: 1. **...
LRU (Least Recently Used) 算法是一种常用的缓存淘汰策略,它的核心思想是优先淘汰最近最少使用的数据。在计算机系统中,由于内存资源有限,当缓存内容达到最大容量时,必须采取一定的策略来决定哪些数据应该被移除...
2. 需要按最近使用(LRU)策略进行缓存淘汰时,LinkedHashMap可以方便地根据访问顺序实现。 总的来说,LinkedHashMap结合了HashMap的高效性和有序性的特点,适用于那些对元素顺序有特定需求但又希望保持高效性能的...
`LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制,常用于图片、数据等对象的缓存,以减少磁盘读取和网络加载的次数。本文将详细介绍如何在Android应用中使用`LruCache...
- **LRU (Least Recently Used)**:最近最少使用算法,当缓存满时,移除最近最少被访问的数据。 - **LFU (Least Frequently Used)**:最不经常使用算法,根据数据项的访问频率来决定哪些应该被淘汰。 - **FIFO ...
LRU 算法全称是 Least Recently Used,即最近最久未使用的意思。LRU 算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最...
在计算机科学中,LRU(Least Recently Used)缓存机制是一种常见的缓存淘汰策略,它基于“最近最少使用”的原则来淘汰数据。在Java中实现LRU缓存机制,不仅可以帮助我们更好地理解和应用数据结构,还能在实际开发中...
LRU(Least Recently Used)算法是一种常见的页面替换算法,用于解决计算机内存有限而数据页数量过多的问题。在操作系统中,当内存不足以容纳所有活动页面时,LRU算法会选择最近最久未使用的页面进行淘汰,以腾出...
首先,LruCache(Least Recently Used Cache)是Android SDK提供的一种基于最近最少使用算法(LRU)的内存缓存。LRU策略的基本思想是,如果一个数据最近被访问过,那么它未来被访问的可能性较高。因此,当内存空间...
此外,缓存策略还包括了失效机制,例如LRU(Least Recently Used)最近最少使用和LFU(Least Frequently Used)最不经常使用。LRU会淘汰最近最少使用的数据,而LFU则是淘汰使用频率最低的数据。在Java中,可以使用...
这些库都内置了高效的缓存策略,包括LRU(Least Recently Used)算法来管理内存缓存,以及基于文件名的磁盘缓存策略。当图片请求被发起时,它们会首先查找内存缓存,如果找不到再查询磁盘缓存,最后如果两者都没有,...
4. **最近最久未使用(Least Recently Used,LRU)算法**: LRU算法是基于页面的历史访问频率来进行决策的。它认为最近被访问的页面在未来最有可能再次被访问,因此优先保留这些页面。在Java中,可以使用HashMap或...
LRU(Least Recently Used)缓存策略是一种广泛应用于计算机系统中的内存管理算法,它通过将最近最少使用的数据优先淘汰来优化缓存的性能。在内存有限的情况下,LRU策略能够尽可能保留最近常用的数据,提高数据访问...
LRU(Least Recently Used)缓存是一种常用的内存管理策略,用于在有限的内存资源中高效地存储和访问数据。在Android开发中,`LruCache`是Google提供的一种基于LRU算法实现的缓存机制,它被广泛应用于图片、数据库...