本文共 643 字,大约阅读时间需要 2 分钟。
LRU算法:最近最少使用,淘汰时间最长未被使用的数据。
实现思路:
1.创建一个队列,并设置队列的阈值。
2.将数据按顺序存放到队列中,新增数据时将数据添加到队列尾部,如果队列超过阈值,则从队列头部删除数据。
3.LinkedHashMap可以设置数据的访问顺序,并且在新增元素时可以删除最老的元素,所以可以用来实现LRU算法。
/** * * LRU算法:最近最少使用,淘汰时间最长未被使用的数据 * @param* @param * * @version 1.0 */public class LRU extends LinkedHashMap { private int cacheSize; public LRU(int cacheSize) { /** * accessOrder: true=访问顺序排序(get/put时排序),false=插入顺序排序 */ super(16, 0.75f, true); this.cacheSize = cacheSize; } /** * 新增元素时调用,返回true时删除最老元素 */ protected boolean removeEldestEntry(java.util.Map.Entry eldest) { return size() > cacheSize; } }
转载地址:http://ywxnn.baihongyu.com/