参考:
使用数组+链表方式
https://segmentfault.com/a/1190000018054154
三种不同方式比较:
https://www.cnblogs.com/zlting/p/10775887.html
LinkedHashMap实现:
accessOrder 默认为false;此时在 添加元素时,不会将链表中的节点移动到链表末尾
removeEldestEntry默认返回false,不会删除头节点head;
所以在使用LinkedHashMap 实现LRU时,需要在初始化时,将accessOrder设置为ture(按插入顺序迭代),此时
afterNodeAccess会将新添加或者修改的节点移动到链表的末尾,变成tail节点。
同时,重新实现removeEldestEntry,当map的size()大于容量时,返回ture,此时afterNodeInsertion 方法中会将头节点删除。