今天看啥  ›  专栏  ›  码小辫

京东一面:你怎么实现一个缓存满了自动淘汰最近最少使用的缓存。

码小辫  · 公众号  ·  · 2025-05-19 17:10
    

文章预览

码小辫  百 万 粉 丝认证 号 点击关注后,你不仅获得一个找资源的工具,更获得一个有趣的灵魂  ▶  ▶   ▶ 想要在Java中设计一个缓存,当缓存满了的时候自动淘汰最近使用最少的那个。也就是LRU缓存机制。 首先,我得回忆一下LRU的原理。LRU是Least Recently Used的缩写,即最近最少使用,当缓存容量达到上限时,删除最久未使用的数据。 那Java中怎么实现呢?通常可以用哈希表加双向链表的结构。哈希表用来快速查找缓存项,而双向链表用来维护访问顺序。每次访问一个节点,就把它移到链表头部,这样链表尾部就是最近最少使用的节点,当需要淘汰时,删除链表尾部的节点。 不过,Java标准库中是否有现成的数据结构可以直接使用呢?比如LinkedHashMap。LinkedHashMap内部维护了一个双向链表,可以按照访问顺序或者插入顺序来排序。如果设置accessOrder ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览