2013-04-18 74 views
0

我想实现一个简单的MRU缓存:如果队列包含对象 实施MRU算法

  • get(Object): 
    
    • 检查是:我将使用一个队列从队列中删除,并在插入开始
    • 号:请求转发到系统,获得元素,并在年初
插入

这种方法好吗?我已经看到许多实现使用地图,但我不明白为什么。为什么我需要一个Key,Value对的缓存?

+0

你可以将“lastUsed”时间戳添加到您的对象,并按照该时间戳对您的集合进行排序 –

+0

忘记MRU部分(驱逐可能是可插入的策略)。考虑缓存部分。队列是否有意义? –

回答

0

因为检查,如果一个集合包含的元素是快得多与地图(理论上O(1)),与队列你将不得不遍历所有现有元素和比较,即O(sizeOfQueue)

+0

是的,但为什么我会使用地图而不是集合? – matthias

+0

一组将不允许您从集合中检索项目,Set API不包含'get()'函数。 – yurib