参考:
使用数组+链表方式
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 方法中会将头节点删除。
本文探讨了使用数组+链表实现LRU缓存机制的方法,并对比了多种实现方案。详细解析了LinkedHashMap在实现LRU策略时的参数设置与自定义方法,包括accessOrder与removeEldestEntry的作用。
794

被折叠的 条评论
为什么被折叠?



