想要做到O(1)的Get,我们很容易想到
使用哈希表来存储每个key对应的value;要想实现O(1)的Put,并且能当容量满了的时候自动弹出最久未使用的元素,单纯使用哈希表是比较难实现的,因此我们可以使用一个
双向链表
头部存放最新被使用的节点
尾部存放最久未使用的节点。那么哈希表只需要
记录key到node的映射,就能让我们快速的追踪到节点在双向链表中的位置。