LinkHashMap(LruCache)
简介
继承于HashMap
且内部额外维护一个双链表,并且存储了头尾节点head
和tail
用于实现LruCache
构造函数
public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
accessOrder
默认为false
,false
节点顺序为插入序,true
节点顺序为查询序
removeEldestEntry
默认返回false,在put插入新节点而不是替换旧节点时调用;
可以通过重载此方法限制最大长度
put
将节点插入到HashMap
中,插入后,在将该节点更新为tail
并同步指针
get
从HashMap
中查询节点,找到非空节点时,判断构造函数中accessOrder
是否为true
,如果为true
,将该节点移动到tail
并更新指针