package common;
import java.util.LinkedHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*
* @Title: LRUCache.java
* @Copyright: Copyright (c) 2011
* @Description: <br>LRUCache 本地缓存
* <br>
* @Company: renren.com
* @Created on 2014-1-14 下午1:25:55
* @author youle.heng
*/
public class LRUCache <K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -8021134033779621716L;
private final int maxCapacity;
private static final float DEFAULT_LOAD_FACTOR = 0.75f;
private final Lock lock = new ReentrantLock();
public LRUCache(int maxCapacity) {
super(maxCapacity, DEFAULT_LOAD_FACTOR, true);
this.maxCapacity = maxCapacity;
}
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > maxCapacity;
}
/**
* Weather contains someone Object according to a key
* @param key
*/
@Override
public boolean containsKey(Object key) {
lock.lock();
try {
return super.containsKey(key);
} finally {
lock.unlock();
}
}
/**
* Get one Object according to a key
* @param key
*/
@Override
public V get(Object key) {
lock.lock();
try {
return super.get(key);
} finally {
lock.unlock();
}
}
/**
* Put an Object to cache
* @param key,value
*/
@Override
public V put(K key, V value) {
lock.lock();
try {
return super.put(key, value);
} finally {
lock.unlock();
}
}
/**
* The cache's size
*/
public int size() {
lock.lock();
try {
return super.size();
} finally {
lock.unlock();
}
}
/**
* clear the cache
*/
public void clear() {
lock.lock();
try {
super.clear();
} finally {
lock.unlock();
}
}
/**
* Delete one Object from cache
*
* @param key
*/
public void delete(Object key) {
lock.lock();
try {
super.remove(key);
} finally {
lock.unlock();
}
}
}
new 一个能存储50个值的LRUCache对象
LRUCache<String,String> mc = new LRUCache<String,String>(50);
相关推荐
自定义实现LRUCache的实现和调用. 简单地扩展LinkedHashMap
Android使用LruCache缓存图片,
异步下载图片,使用LruCache和手机目录缓存,GridView滑动的时候取消下载图片,效果流畅,这里是代码,更多的介绍http://blog.csdn.net/xiaanming/article/details/9825113
这是一个用LruCache算法的listView图片加载工具类,可以直接下载后接入自定义的Adapter即可。
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
简易单链表增删改查功能实现。新增内容:新增单链表LruCache算法增删改查,对学习LruCache 算法有一定帮助。
C# LRUcache C# LRUcache
Android缓存的一个Demo,对Lrucache 和Srofrencen 进行了分析的使用,希望大家一起学习交流
LruCache和DiskLruCache实现二级缓存的自定义ImageLoader
PhotosWallDemo 结合LruCache和DiskLruCache PhotosWallDemo 结合LruCache和DiskLruCache
基于Andoird的LRUCache机制介绍
LruCache缓存
LRUCache11:只有Header的C 11 LRU 缓存模板类,允许您定义键,价值和可选Map类型。使用一个双链表。
此DEMO主要是针对帧动画,实现方式有三种:1、FrameAnimation+xml;2、代码中加载每一帧;3、自定义动画,采用LruCache对每一帧图片进行内存优化防止图片oom。
lua-resty-lrucache, 在 LuaJIT FFI上,基于Lua缓存 电子邮件名称lua-resty-lrucache - 基于 LuaJIT FFI的land缓存目录NAME状态概要说明描述方法新插件设置 。删除先决条件安装工具待办事项社区服务英文邮件列表中文...
LruCache 的使用 Demo,虽然加载了非常大的图片,但是使用了 Lrucache 作为缓存,使整个 app 的内存使用情况降下来了。
主要是对LruCache的简单使用介绍,http://blog.csdn.net/richardli1228/article/details/50014895
LruCache 源码,摘抄下来,方便查阅。 https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/util/LruCache.java
LruCache实例demo 详情请看:http://blog.csdn.net/zxw136511485/article/details/52153287 Android 缓存浅谈(一)
这是一个包含异步加载、网络编程、JSON解析、LruCache图片缓存的简易的ListView图文混排Demo.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。