Я пытался реализовать LRU Cache с использованием 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> {
Это связано с инкапсуляцией, правильно? Это означает, что если я хочу написать это с нуля, мне нужно определить мой собственный класс Node, который позже можно будет использовать в качестве ссылки. – jaamit