java 基于linkedhashmap实现LRUCache
2014-10-29 14:40
453 查看
所谓LRU就是最近最少被使用的意思,LRUCache的目的就是当缓存中的数据量达到一定的程度时,添加新的数据会将最近最少被使用的旧数据删除,以保障Cache中的数据都是经常需要的数据,提高命中率。下面是一个基于linkedhashmap的LRUCache的简单实现,关键是重写LinkedHashMap的removeEldestEntry方法,在LinkedHashMap中该方法默认返回false(LRUCache本身未考虑线程安全的问题)
public class BasicLRUCache<K, V> { private LinkedHashMap<K, V> map; private int cacheSize; static final int DEFAULT_CACHE_SIZE = 2; public BasicLRUCache() { this(DEFAULT_CACHE_SIZE); } public BasicLRUCache(int cacheSize) { this.cacheSize = cacheSize; int hashTableSize = (int) Math.ceil(cacheSize/0.75f) + 1; map = new LinkedHashMap<K,V>(hashTableSize, 0.75f, true) { private static final long serialVersionUID = 1L; @Override protected boolean removeEldestEntry(java.util.Map.Entry<K,V> eldest) { System.out.println("size=" + size() + " cacheSize=" + BasicLRUCache.this.cacheSize); return size() > BasicLRUCache.this.cacheSize; }; }; } public V put(K key, V value) { return map.put(key, value); } public V get(Object key) { return map.get(key); } public static void main(String[] args) { BasicLRUCache<String, String> lruCache = new BasicLRUCache<String, String>(3); lruCache.put("1", "1"); lruCache.put("2", "2"); lruCache.put("3", "3"); lruCache.put("4", "4"); System.out.println(lruCache.get("1")); System.out.println(lruCache.get("2")); System.out.println(lruCache.get("3")); System.out.println(lruCache.get("4")); } }上面的程序运行的结果将是如下,从下面的结果中可以看出缓存大小为3时,当添加第4个元素时,最新插入的元素会被删除掉。
size=1 cacheSize=3 size=2 cacheSize=3 size=3 cacheSize=3 size=4 cacheSize=3 null 2 3 4
相关文章推荐
- 基于Java实现简单Http服务器之一
- 利用Java技术实现基于XML的Web服务
- Java中实现基于Aspectwerkz的AOP开发
- 基于JAVA技术的搜索引擎的研究与实现(转载)
- 用RMI实现基于Java的分布式计算
- Java 与 .NET 的基于 WS-Security的Web Services集成实现(上)
- 基于JAVA实现的手机收发短消息系统
- 基于Java实现Http服务器之二
- 基于Java实现简单Http服务器之一
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- 用Java实现基于XML的购物车
- 基于java得web服务器实现[Z]
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- 基于“用java.util.*中的LinkedList实现stack” 2.0版
- 基于Java实现Http服务器之二
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- 基于JAVA技术的搜索引擎的研究与实现
- 一个基于Winform+Java WebService的实现