LRU ,最近最少使用淘汰算法,用于存储 限量limit的数据,不超过 limit的数据将直接存储,若超过limit,则将"最老的数据" 淘汰掉。使用LinkedHashMap实现。
LinkedHashMap相较于HashMap增加了 排序,但又比TreeMap less cost。
LinkedHashMap继承自HashMap,在entry间维系一个双向链表,但具有预指定迭代顺序,通常为插入顺序。这种情况下,如果key被re-inserted,其顺序不会改变,即更新key并不会改变原有顺序。
但还可以指定排序为按entry最后访问排序。
A special {@link #LinkedHashMap(int,float,boolean) constructor} is provided to create a linked hash map whose order of iteration is the order in which its entries were last accessed, from least-recently accessed to most-recently (access-order). This kind of map is well-suited to building LRU caches.
其基础api与HashMap时间cost类似,Performance is likely to be just slightly below that of
但LinkedHashMap迭代器耗时与map的size相关,而非capacity。
```
相关文章
JAVA 线程的6种状态
线程状态(Thread.State)。线程处于下列状态的其中之一。 一个线程一次只能有一个状态。这些状态是虚拟机线程状态,不能反映任何操作系统的线程状态。[En]A thread can only h...
【每日算法】动态规划五
918.环形子数组的最大和 152.乘积最大子数组 1567.乘积为正数的最长子数组长度 难度[中等] 给定一个...
2.HTTP请求的GET与POST方式的区别
答: Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响 应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。 Post:用来向目...
idea自动补全代码及scanner方法快捷键
1.Shift+Enter: 不管鼠标位置在哪都能向下插入一行。 适合场景:修改刚写完的某条语句的某个地方之后,不需要用鼠标点到语句最后再回车,直接Shift+Enter接着往下打。 2.Ctrl+S...
Halo 开源项目学习(六):事件监听机制
基本介绍 Halo 项目中,当用户或博主执行某些操作时,服务器会发布相应的事件,例如博主登录管理员后台时发布 "日志记录" 事件,用户浏览文章时发布 "访问文章" 事件。事件发布后,负责监听的 Bea...
设计模式之迭代器模式
本文介绍设计模式中的迭代器模式,首先通俗的解释迭代器模式的基本概念和对应的四个角色,并根据四个角色举一个典型的实例,为了加强知识的连贯性,我们以Jdk源码集合中使用迭代器模式的应用进一步说明,最后说明...
面向对象3(Java)
即同一方法可以根据发送对象的不同而采用多种不同的行为方式 对象的实际类型已确定,但有许多引用类型可以指向该对象[En]The actual type of an object is determine...
Bigdecimal的格式化以及长度判断
Bigdecimal的格式化 需求 Bigdecimal的长度太长 需要处理 1.定义一种格式 decimalFormat.setRoundingMode (RoundingMode.HALF_UP)...
Java常用集合基础概念及源码流程分析
ArraysList,基于数组实现,默认容量为10,扩容时会先创建一个原始1.5倍的数组,然后再把元素复制过去。特点: 有序,可存重复元素,可存null 查询快,增删慢,适合查询较多的场景 如果使用无...
EVE-NG 安装和使用过程中出现的问题
vmware 不能启动EVE-NG/vmware闪退 同类问题(带错误消息的): 原因猜测: 可能是Hyper-v 与 vmware 不兼容所导致,删除Hyper-v 问题解决了 注意: 如果不想删除...
SpringMVC(5)-ssm整合实现增删改查-mybatis层
mybatis层编写完毕后的项目目录 1.右键SpringMVC2项目-》new-》Modual-》选择maven项目(我的项目名为Study09_ssm),输入模块名,点击Finish 2.第二部的...
SpringCloud微服务实战——搭建企业级开发框架(二十八):扩展MybatisPlus插件DataPermissionInterceptor实现数据权限控制
一套完整的系统权限需要支持功能权限和数据权限,前面介绍了系统通过RBAC的权限模型来实现功能的权限控制,这里我们来介绍,通过扩展Mybatis-Plus的插件DataPermissionInterce...
Java/后端学习路线
自学/学习路线这样的一期我想写很久了,因为一直想写的全一点硬核一点所以拖到了现在,我相信这一期对不管是还在学校还是已经工作的同学都有所帮助,不管是前端还是后端我都墙裂建议大家看完,因为这样会让你对你所...