本文主要是介绍LruCache的原理与实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LruCache(Least Recently Used Cache)是最近最少使用缓存。这种缓存能按照每个元素最近的使用情况维护元素的顺序,有一定的容量限制,并能在容量超出限制时自动删除最少使用的元素。
java中的LinkedHashMap是一种能实现LruCache的数据结构。LinkedHashMap也像一般的Map一样其元素是以键值对<K, V>的形式按照哈希算法存储的,但是不同于一般的HashMap,其元素也是链表中的一个结点,而元素的值是存在这个结点中的。
基于LinkedHashMap数据结构,我们可以实现LruCache:每次有get或者put操作,此元素会被放到链表的头结点,当缓存容量超过上限时,删除链表尾的元素。
java代码实现:
import java.util.LinkedHashMap;
import java.util.Map;public class LruCache<K, V> extends LinkedHashMap {private int cacheSize;public LruCache(int cacheSize) {super(16, 0.75f, true);this.cacheSize = cacheSize;}@Overrideprotected boolean removeEldestEntry(Map.Entry entry) {return size() > cacheSize;}
}
源代码地址:https://github.com/SSSxCCC/Algorithm
这篇关于LruCache的原理与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!