LRU - LinkedHashMap

LinkedHashMap 是由一个HashMap 和LinkedList 双向链表组成的。

LRU:最近最少使用算法可以使用LinkedHashMap来实现:

HashMap:只用来维护数据结构和获取数据,使得获取数据的时间复杂度为O(1),跟正常的HashMap的使用没有区别。

LinkedList:是一个双向链表,头节点指向链表头部,同时也指向链表尾部,所以LRU的每次数据更新排序的时间复杂度为O(1),每次获取数据,或者更新数据需要将对应的数据从节点中间转移到链表头部,这样就能使链表尾部的节点永远是最长时间没有被访问的,当添加数据时,发现数据的大小等于我们规定的容量了,就会将链表尾部的数据删除(同时也需要在HashMap上删除对应的数据),并将新添加的数据放入链表尾部。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容