我试图使用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> {
答案 0 :(得分:0)
不,你不能做你在Java尝试做的事情;您无法访问LinkedList
的内部节点。您可以做的是在LRU mode中使用LinkedHashMap,然后覆盖removeEldestEntry
以限制缓存大小。