当前位置: 代码迷 >> 综合 >> Java LinkedHashMap
  详细解决方案

Java LinkedHashMap

热度:75   发布时间:2023-12-18 09:28:58.0

LinkedHashMap继承HashMap,但相对HashMap有以下不同
1.插入是有顺序的,底层的Entry通过继承HashMap.Node,添加一个before和after结点实现插入有序
2.支持访问顺序 创建时调用构造函数LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder),指定第三个参数为true
3.LinkedHashMap的removeEldestEntry(Map.Entry eldest)方法,通过重写removeEldestEntry方法,可以让LinkedHashMap保存特定数目的Entry,通常用在LinkedHashMap用作缓存的情况。

通过重写removeEldestEntry方法,实现LRU:

public class LRUCache extends LinkedHashMap {private final int CACHE_SIZE;public LRUCache(int initialCapacity) {// 但三个参数,初始化,负载因子,开启排序super(16, 0.75f, true);CACHE_SIZE = initialCapacity;}@Overrideprotected boolean removeEldestEntry(Map.Entry eldest) {// 当map中的数据量大于指定的缓存时,删除最老的return size() > CACHE_SIZE;}
}
  相关解决方案