使用LinkedHashMap来实现一个使用LRU(Least Recently Used)算法的cache
2018-08-27 15:04
645 查看
removeEldestEntry在使用put或者putAll方法插入一个新的entry到map中时被调用,是否要删除年老的entry取决于是否满足既定的条件(比如本例中的条件:MAP中entry数量大于1000)。如果MAP表示缓存,这是有用的:它允许MAP通过删除过时条目来减少内存消耗。
import java.util.LinkedHashMap; import java.util.Map; public class LruCache { private final Map<Object, Object> store; private static final int MAX = 1000; public LruCache() { this.store = new LinkedHashMap<Object, Object>() { private static final long serialVersionUID = -3834209229668463829L;; /** * 当满足一定条件时删除Map中的年老的Entry */ @Override protected boolean removeEldestEntry(Entry<Object, Object> eldest) { return size() > MAX; } }; } public void put(Object key, Object value) { synchronized (LruCache.class) { store.put(key, value); } } public Object get(Object key) { synchronized (LruCache.class) { return store.get(key); } } }
相关文章推荐
- Android使用LinkedHashMap实现一个LRU算法的内存缓存
- 自己实现的一个Cache 使用最近常使用算法
- 使用C++实现一个LRU cache
- 使用 LinkedHashMap 实现 LRU 算法
- leetcode LRU Cache(高级缓存的最近最少使用算法实现)
- LRU (Least Recently Used) 算法的Java实现
- LinkedHashMap实现一个固定容量的基于最近最少使用算法的缓存类
- 使用 Java.util.LinkedHashMap 实现 LRU、FIFO 算法
- LRU算法的实现使用linkedHashMap方法,以及使用双链表+hashtable方法
- 使用LinkedHashMap构建LRU的Cache
- LinkedHashMap 和 LRU算法实现
- 用LinkedHashMap实现的LRU算法
- LinkedHashMap实现LRU算法
- 基于LinkedHashMap实现LRU缓存调度算法原理
- 基于LinkedHashMap实现LRU缓存调度算法原理
- 如何设计实现一个LRU Cache?
- 手写一个自己的LocalCache - 基于LinkedHashMap实现LRU
- 最近最久未使用页面淘汰算法———LRU算法(java实现)
- LRU(Least Recently Used)缓存介绍与实现
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)