LRU least recently used 最近最少使用算法
根据数据的历史访问记录来淘汰数据,其核心思想是:如果数据最近被访问过,那将来被访问的几率会很高
实现方法:
可以用链表存储数据。
对于新数据,则插入到链表头;
对于命中数据,则移动到链表头;
当链表满时,移除链表尾部的数据。
可以基于LinkedHashMap来实现LRU算法。
LinkedHashMap本身是个list,另外还可以通过map来快速查找数据。
以上需要对LinkedHashMap熟悉些
要求:
LRUCache
- 有个容量capacity
- 有个get(Key key)方法, 时间复杂度O(1)
- 有个put(Key key, Value value)方法,时间复杂度O(1)
除了基于LinkedHashMap实现外,也可以直接使用HashMap + 双向列表的方式实现(这种方案就不用了解LinkedHashMap的具体实现了)