使用LinkedHashMap来实现一个使用LRU(Least Recently Used)算法的cache
2024-09-12 20:01:23
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);
}
} }
最新文章
- nslookup
- 通过seekBar改变图片的透明度
- 使用ab进行压力测试
- Win2K3一句话开3389
- jquery的一些技巧总结
- VMware下ubuntu与win8共享文件时/mnt/hgfs目录为空的解决办法
- C#整理1——进制转换
- dev layoutControl 控件使用
- 在Activity之间传递数据—获取Activity返回的数据
- 常用 SQL语句
- 老李分享:大数据测试之HDFS文件系统
- alive pdf 基本用法
- jq-css、class、属性操作
- hdpi对应分辨率
- MySQL 组提交(group commit)
- 自学Linux Shell12.1-结构化命令if-then
- System.Threading.Timer
- shared_ptr(作为局部变量返回)
- (转)GCT之逻辑经验总结(拿来主义)
- 项目冲刺Beta第一篇博客
热门文章
- python 全栈开发,Day72(昨日作业讲解,昨日内容回顾,Django多表创建)
- 读取web.config和app.config配置文件
- list的遍历
- bootstrap——辅助类和响应式工具类
- mydate97时间控件的使用
- linux命令之grep用法
- Linux 文件系统与挂载详解
- BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法
- 全排列问题(递归&;非递归&;STL函数)
- UVA 624 CD[【01背包】(输出路径)