LRU是Least Recently Used 近期最少使用算法。
LinkedHashMap有一个removeEldestEntry(Map.Entry eldest)方法,通过覆盖这个方法,加入一定的条件,满足条件返回true。当put进新的值方法返回true时,便移除该map中最老的键和值。
package scorpio.jh.maptest; import java.util.LinkedHashMap; import java.util.Map; public class LinkedHashMapTest { public static void main(String[] args) { Map map = new FixedSizeLinkedHashMap(); System.out.println(map.size()); for(int i = 0; i < 50; i++) { map.put(i, true); System.out.println(map.size()); System.out.println(map); } } } class FixedSizeLinkedHashMap extends LinkedHashMap{ private static final long serialVersionUID = 6918023506928428613L; private static int MAX_ENTRIES = 10; /** * 获得允许存放的最大容量 * @return int */ public static int getMAX_ENTRIES() { return MAX_ENTRIES; } /** * 设置允许存放的最大容量 * @param int max_entries */ public static void setMAX_ENTRIES(int max_entries) { MAX_ENTRIES = max_entries; } /** * 如果Map的尺寸大于设定的最大长度,返回true,再新加入对象时删除最老的对象 * @param Map.Entry eldest * @return int */ protected boolean removeEldestEntry(Map.Entry eldest) { return size() > MAX_ENTRIES; } }
相关推荐
Java提供了LinkedHashMap,可以用该类很方便的实现LRU算法,Java的LRULinkedHashMap就是直接继承了LinkedHashMap,进行了极少的改动后就可以实现LRU算法。 二、Java的LRU算法 Java的LRU算法的基础是LinkedHashMap,...
通过一个特殊的构造函数,三个参数的这种,最后一个布尔值参数表示是否要维护最近访问顺序,如果是 true 的话会维护最近访问的顺序,如果是 false 的话,只会维护插入...LinkedHashMap这种结构非常适合构造 LRU 缓存。
Java提供了LinkedHashMap,可以用该类很方便的实现LRU算法,Java的LRULinkedHashMap是直接继承了LinkedHashMap,进行了极少的改动后可以实现LRU算法。 二、Java的LRU算法 Java的LRU算法的基础是LinkedHashMap...
这是关于Java学习的主要针对LinkedHashMap的实现原理
SDK中的LruCache类参考实现的LRU算法缓存存储类. 原理 之前分析过Lru算法的实现方式:HashMap+双向链表,参考链接: 这里主要介绍Android SDK中LruCache缓存算法的实现. 构造函数 LruCache只有一个构造函数,并且有一个...
深入Java集合学习系列(四): LinkedHashMap的实现原理
基于LinkedHashMap实现LRU算法 PalindromeBaseArray 基于数组实现回文串的判断 链表练习 SingleLinkedList 实现单链表的增、删、改、查操作 LRUBaseLinkedList 基于单链表实现LRU算法 PalindromeBaseLinked 基于链表...
基于JavaLinkedHashMap实现的 LRU 算法 algorithm.consistentHashing ConsistentHash: 一致性Hash算法 algorithm.cap algorithm.subset 给一个set打印出所有子集 jdk jdk 知识 jdk.autoboxing 自动装箱拆箱 jdk....
要注意一点的是LinkedHashMap是可以实现LRU缓存策略的,前提是你需要将LinkedHashMap中的accessorder属性设置为true。 因此你基本可以认为LinkedHashMap是LinkedList和HashMap的一个组合。 LinkedHashMap简介 ...
LinkedHashMap源代码,Java中Map的一种实现子类。
本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅...
分成三级对图片进行缓存,第一级采用LinkedHashMap(LRU算法),第二季采用ConcurrentHashMap线程安全控制
本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅...
这个demo主要讲解了LinkedHashmap的使用,希望可以帮助需要的同学.
Set是使用LinkedHashMap在Go(Golang)中简单的Set数据结构实现。 该库允许您获取一组int64或string而没有重复的项目。 用法 package main import ( "fmt" "github.com/StudioSol/set" ) func main () { ...
java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
在理解了#7 介绍的HashMap后,我们来学习LinkedHashMap的工作原理及实现。首先还是类似的,我们写一个简单的LinkedHashMap的程序: LinkedHashMap<String> lmap = new LinkedHashMap(); lmap.put(语文, 1)...
HashMap,HashTable,LinkedHashMap,TreeMap的区别
如何用LinkedHashMap实现LRU? 如何用TreeMap实现一致性hash? ConcurrentHashMap是如何在保证并发安全的同时提高性能? ConcurrentHashMap是如何让多线程同时参与扩容? LinkedBlockingQueue、DelayQueue是如何实现...