LRU缓存算法Java实现
2016-03-05 20:35
731 查看
最近在学习缓存算法,就自己用java实现了一个LRU缓存算法,其实LRU可以直接用LinkedHashMap直接实现,本文采用HashMap来进行构造代码如下:
}*
*public class LRUCache<K,V>{ private class CacheElemet<K,V>{ private CacheElemet before; private CacheElemet next; private K key; private V value; public CacheElemet(K key,V value) { this.key=key; this.value=value; } } private int capacity=16; private HashMap<K,CacheElemet> hs; private CacheElemet first=null; private CacheElemet last=null; public LRUCache(){ hs=new HashMap<K,CacheElemet>(capacity); } public LRUCache(int mCapacity) { this.capacity=capacity; hs=new HashMap<K,CacheElemet>(capacity); } public V get(K key) { if(!hs.containsKey(key)) { return null; } CacheElemet current=hs.get(key); current.before.next=current.next; current.next.before=current.before; addToLast(current); return (V)current.value; } public void put(K key,V value) { if(hs.size()==0) { first=new CacheElemet(-1,-1); last=new CacheElemet(-1,-1); first.next=last; first.before=last; last.next=first; last.before=first; hs.put(null,first); hs.put(null,last);; } if(hs.containsKey(key)) { hs.get(key).value=value; return; } if(hs.size()==capacity) { hs.remove(first.next); first.next=first.next.next; first.next.before=first; } CacheElemet elemet=new CacheElemet<K,V>(key, value); hs.put(key, elemet); addToLast(elemet); } public void addToLast(CacheElemet element) { element.before=last.before; last.before=element; last.before.next=element; element.next=last; }
}*
相关文章推荐
- # 20145205 《Java程序设计》第1周学习总结
- java中的集合
- 20145330孙文馨 《Java程序设计》第一周学习总结
- 20145223《Java程序程序设计》第1周学习总结
- javaweb笔记全套
- 学习java的一点心得(一)
- 解决myeclipse中没有filter新建功能+点击Customize Perspective 没有反应
- Java——java.text.SimpleDateFormat的用法
- Spring集成Mybatis错误Result Maps collection already contains value for XXX
- java访问权限
- java中equals和==的区别详解
- Java泛型
- java web 性能优化----浏览器优化
- struts2 标签
- 公众平台测试帐号开发全流程第2篇-搭建项目
- Mac Eclipse项目转换到AndroidStudio项目
- Java笔记
- java(二十三) 可变类和不可变类
- Java开发者对于Java所要关注的几个点
- Java连接Mysql数据库警告:Establishing SSL connection without server's identity verification is not recommend