class LRUCache(object): def __init__(self, capacity): self.capacity = capacity self.map = {} self.list = DoubleLinkedList(self.capacity) # 使用(或获取)一个结点,此时它就是最近使用的,故要提前 def get(self, key): if key in self.map: node = self.map[key] self.list.remove(node) self.list.append_front(node) return node.value else: return -1 def put(self, key, value): # 已存在结点 if key in self.map: node = self.map.get(key) self.list.remove(node) node.value = value self.list.append_front(node) else: # 新结点 node = Node(key, value) # 缓存已满的话先删掉末尾的元素 if self.list.size >= self.capacity: old_node = self.list.remove() self.map.pop(old_node.key) self.list.append_front(node) self.map[key] = node def print(self): self.list.print()
class LRUCache(object): def __init__(self, capacity): self.capacity = capacity self.map = {} self.list = DoubleLinkedList(self.capacity) def get(self, key): if key in self.map: node = self.map[key] self.list.remove(node) self.list.append_front(node) return node.value else: return -1 def put(self, key, value): if key in self.map: node = self.map.get(key) self.list.remove(node) node.value = value self.list.append_front(node) else: node = Node(key, value) # 缓存已经满了 if self.list.size >= self.list.capacity: old_node = self.list.remove() self.map.pop(old_node.key) self.list.append_front(node) self.map[key] = node def print(self): self.list.print()