LinkedHashMap
定义
1 | public class LinkedHashMap<K,V> |
继承于HashMap,底层使用哈希表与双向链表来保存所有元素。其基本操作与父类HashMap相似,它通过重写父类相关的方法,来实现自己的链接列表特性(维护一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)))
核心方法介绍
init
1 | void init() { |
构造方法
1 | public LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder) { |
这种迭代访问顺序,适合构建LRU(Least Recently Used)缓存。LinkedHashMap在添加方法中使用了removeEldestEntry方法:
1 | void addEntry(int hash, K key, V value, int bucketIndex) { |
默认返回false,即不进行近期访问最少处理元素,进行删除处理。
1
2
3
4
5 protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return false;
}
如果想实现LRU缓存,则需要重写removeEldestEntry方法,如维持大小我为100的集合:
1 | private static final int MAX_ENTRIES = 100; |
超过100,则继续删除最早的元素。