import java.util.LinkedHashMap; import java.util.Map; publicclassLRUCache<K, V> extendsLinkedHashMap<K, V> { privateint cacheSize; publicLRUCache(int cacheSize){ // 第三个参数设置为true表示应该按照访问顺序排序,最近访问的放在头部,最老访问的放在尾部 super(16, 0.75f, true); //...
V> { private int cacheSize; public LRUCache(int cacheSize) { // ...
private LruCache<String, Bitmap> lruCache = null; private LinkedHashMap<String, SoftReference<Bitmap>> merCache = null; private static MemoryCache mc = null; private MemoryCache() { merCache = new LinkedHashMap<String, SoftReference<Bitmap>>( MAP_CACHE_SIZE, 0.75f, true) { private static...
compute,computeIfAbsent,computeIfPresent,containsKey,equals,hashCode,isEmpty,merge,put,putAll,putIfAbsent,remove,remove,replace,replace,size Constructor Detail LinkedHashMap public LinkedHashMap(int initialCapacity, float loadFactor) Constructs an empty insertion-orderedLinkedHashMapinstance with the specified ...
import java.util.LinkedHashMap; import java.util.Map; public class LRUCache extends LinkedHashMap { private static final int MAX_CACHE_SIZE = 100; pri
基于LinkedHashMap的使用顺序的特性,我们可以用来实现LRU算法(Mybatis的LRU算法也是这样实现的) bigSize表示缓存最大容量,超过这个值最近最少使用的key,将会被移除。 publicclassLruCacheextendsLinkedHashMap<Object,Object>{privateintbigSize;publicLruCache(intbigSize){this(1024,0.75F,true,8);}publicLruCache(int...
if(cache.size() >= this.capacity){ Iterator<Integer> iterator = cache.keySet().iterator(); cache.remove(iterator.next()); } cache.put(key,value); } //根据key值将该key-value移到表尾,表示最近使用 private void makeKeyRecentUse(int key){ ...
if(cache.size() == cap){ // 删除链表头第一个元素(最不常使用的) int oldKey = cache.keySet().iterator().next(); cache.remove(oldKey); } // 插入新元素 cache.put(key, value); } // 将该元素提升为最近使用过的 private void makeRecently(int key){ ...
LinkedHashMap 还可以作为一个 LRU缓存。他提供了一个removeEldestEntry方法,继承LinkedHashMap 并重写方法如下 @OverrideprotectedbooleanremoveEldestEntry(Map.Entryeldest){returnsize()>CACHE_SIZE;} CACHE_SIZE 是我们定义的一个热缓存大小,当map的size 大于我们定义的CACHE_SIZE,就会把之前的最早添加(读取key不会重新...
*/ public class LRUCache<K, V> { private static final float hashTableLoadFactor = 0.75f; private LinkedHashMap<K, V> map; private int cacheSize; /** * Creates a new LRU cache. 在该方法中,new LinkedHashMap<K,V>(hashTableCapacity, * hashTableLoadFactor, true)中,true代表使用访问顺序...