Java 实现MRU算法

Java 实现MRU算法,java,algorithm,caching,Java,Algorithm,Caching,我想实现一个简单的MRU缓存:我将使用队列: get(Object): 检查队列是否包含对象 是:将其从队列中删除,并在开始处插入 否:将请求转发到系统,获取元素并在开头插入 这个方法行吗?我看到很多实现都使用映射,但我不明白为什么。为什么缓存需要密钥和值对 因为使用映射(理论上是O(1))检查集合是否包含元素要快得多,所以使用队列时,您必须迭代所有现有元素并进行比较,即O(sizeOfQueue)您可以向对象添加lastUsed时间戳,并按该时间戳对集合进行排序。忘记MRU部分(逐出

我想实现一个简单的MRU缓存:我将使用队列:

get(Object):
  • 检查队列是否包含对象
    • 是:将其从队列中删除,并在开始处插入
    • 否:将请求转发到系统,获取元素并在开头插入

这个方法行吗?我看到很多实现都使用映射,但我不明白为什么。为什么缓存需要密钥和值对

因为使用映射(理论上是O(1))检查集合是否包含元素要快得多,所以使用队列时,您必须迭代所有现有元素并进行比较,即O(sizeOfQueue)

您可以向对象添加
lastUsed
时间戳,并按该时间戳对集合进行排序。忘记MRU部分(逐出可能是一个可以插入的策略)。想想缓存部分。队列有意义吗。?是的,但为什么我要使用映射而不是集合?!集合不允许您从集合中检索项,集合API不包含“get()”函数。