介绍
LRUCache 缓存的容量大小是固定的,当添加对象时,发现超出容量时,优先把那些最近没有访问的对象移除缓存。
缓存策略中,LRU是基于访问时间的,即最近被访问的对象存活可能行最大,除此之外,还有LFU(基于访问频率),优先移除访问频率最小的。
实现原理
主要的实现原理就是使用了LinkedHashMap,在其构造方法中,设置元素排序按照访问顺序来排(accessOrder=true),而非默认的按插入排序。
当访问元素时,将该结点移动到末尾,而删除元素时,总是优先删除队首的元素,这样便能实现“保留最近使用”。
源码
构造
1 | public class LruCache<K, V> { |
获取一个元素
1 |
|
1 |
|
1 |
|