LRU Cache - 如何声明对列表元素的引用

时间:2016-02-16 04:52:46

标签: java

我试图使用HashMap和双向链表来实现LRU Cache。我想创建以下类: -

public class LRUCache {
    List<V> list;  // LinkedList()
    Map<K, <Reference to list elements/nodes?>> map; // Hashtable()
}

我计划使用LinkedList类作为双向链表和Hashtable类来存储。但是,我不确定如何声明或定义对列表中内部节点元素的引用?

以下参考使用内部Node类进行实现。这是由于您无法访问内部数据字段的LinkedList类的封装吗?

我知道我的理解是部分正确的,但也需要一些确认。我试图在leetcode上解决这个问题,但由于这个问题,我被困了很长时间。

http://www.programcreek.com/2013/03/leetcode-lru-cache-java/

LRU cache in Java with Generics and O(1) operations

// snippet below
public class LRUCache<K, V>{

// Define Node with pointers to the previous and next items and a key, value pair
class Node<T, U> {

1 个答案:

答案 0 :(得分:0)

不,你不能做你在Java尝试做的事情;您无法访问LinkedList的内部节点。您可以做的是在LRU mode中使用LinkedHashMap,然后覆盖removeEldestEntry以限制缓存大小。