LRU从本质上来讲是一个双向链表。

  1. 首先需要定义一个链表节点类Node 有next pre key value 构造 有参数构造

  2. 因为需要移动链表的位置 所以需要通过头部新增和尾部删除来操作。

  3. 然后操作节点的方法 有addNode removeLastNode

  4. 然后你会发现头部新增时候(获取时间需要加到头部,put时候也需要) 如果之前存在,需要删除掉(只有获取时间需要删除) 就有了remove方法

  5. 这样操作链表的3个方法确定了。

  6. 然后链表持有类 自然会有head tail count capacity 构造函数 get put

  7. 题目又要求时间复杂度 那就用空间换时间 用hashmap 冗余一份 取的时候o1

  8. 然后根据命令行输入 进行持有类初始化

  9. 根据命令来操作链表和hashmap 就完成啦