概述
LRU 缓存算法,是提供一种缓存实现,要求插入新数据时,当缓存达到最大空间要求,就将最久没有访问过的数据删除掉从而为新数据腾出空间。同时要求获取或插入数据的时间复杂度都为 O(1)。
基本思路
- hash 表 + 链表
hash 表的目的是为了使访问的事件复杂度为 O(1),链表是为了维护一种时间维度上是否最近被访问的前后关系。其中 hash 表使用 Java 中的 HashMap 来替代,链表部分自己实现。
代码
代码中附带很多注释,具体逻辑请参考注释
LRU 缓存算法,是提供一种缓存实现,要求插入新数据时,当缓存达到最大空间要求,就将最久没有访问过的数据删除掉从而为新数据腾出空间。同时要求获取或插入数据的时间复杂度都为 O(1)。
hash 表的目的是为了使访问的事件复杂度为 O(1),链表是为了维护一种时间维度上是否最近被访问的前后关系。其中 hash 表使用 Java 中的 HashMap 来替代,链表部分自己实现。
代码中附带很多注释,具体逻辑请参考注释
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于