LinkedHashMap 与 LRU 缓存
继承 HashMap, 额外维护一条双向链表保持迭代顺序:
1 | static class Entry<K,V> extends HashMap.Node<K,V> { |
1 | HashMap 桶数组: LinkedHashMap 双向链表: |
accessOrder — LRU 缓存核心:
1 | // accessOrder = false (默认): 迭代顺序 = 插入顺序 |
当 accessOrder=true 时, afterNodeAccess(e) 将访问节点移到链表末尾 —— 最久未访问的自然停留在 head。