社区
Java
帖子详情
关于LinkedHashMap迭代顺序问题求教
qq_27304411
2018-11-04 02:30:09
LinkedHashMap 实现最新插入放在链表尾保持了插入顺序,
但我想实现新插入元素放在最前面。请问要怎么实现。
我的想法是:想通过继承HashMap 覆写 afterNodeAccess。来达到目的。但水平有限没实现得了。
请问有能解决此问题的没?或者提供解决思路。有实例最好,非常感谢!!
...全文
38
回复
打赏
收藏
关于LinkedHashMap迭代顺序问题求教
LinkedHashMap 实现最新插入放在链表尾保持了插入顺序, 但我想实现新插入元素放在最前面。请问要怎么实现。 我的想法是:想通过继承HashMap 覆写 afterNodeAccess。来达到目的。但水平有限没实现得了。 请问有能解决此问题的没?或者提供解决思路。有实例最好,非常感谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java集合框架精讲
本课程是《零基础学Java》课程的第八阶段的课程,该课程延续了之前课程的授课风格!内容经过精心雕琢,细致设计,能够做到讲解深入浅出、通俗易懂!可以真正让学员学有所获!该课程内容包括:Collection集合的继承体系、Map集合的集合体系、部分数据结构知识点、List、Set、ArrayList、Vector、LinkedList、Iterator(
迭代
器)、TreeSet、HashSet、LinkedHashSet、TreeSet、Map、TreeMap、HashMap、Hashtable、
LinkedHashMap
、Collections等知识点的讲解!
LinkedHashMap
顺序
迭代
原理与LRU算法实现
LinkedHashMap
可保证通过keySet()、entrySet()、forEach()等方法获取的元素具有
顺序
性,
顺序
分为两种: - 添加
顺序
:获取元素的
顺序
与其被添加的
顺序
一致。 - 访问
顺序
:按元素被访问的时间进行排序,越近被访问的排在越后面,put和get等方法都表示访问。 在
LinkedHashMap
通过成员变量accessOrder来决定按哪种
顺序
排序,默认为false添加
顺序
,只有通过下面这个构造方法在创建
LinkedHashMap
时将accessOrder设置为true,才表示访问顺
JDK1.8之HashMap &
LinkedHashMap
迭代
器
一、前言 在遍历HashMap与
LinkedHashMap
时,我们通常都会使用到
迭代
器,而HashMap的
迭代
器与
LinkedHashMap
迭代
器是如何工作的呢?下面我们来一起分析分析。 二、
迭代
器继承图 三、HashMap
迭代
器 3.1 HashIterator HashIterator是一个抽象类,封装了
迭代
器内部工作的一些操作
LinkedHashMap
LinkedHashMap
LinkedHashMap
继承HashMap,其结构与HashMap相似 它保证了元素
迭代
的
顺序
。该
迭代
顺序
可以是插入
顺序
或者是访问
顺序
。 我们知道HashMap有一个
问题
,就是它的遍历
顺序
是不确定的。但是有些场景,我们需要一个有序的Map。为解决这一
问题
,
LinkedHashMap
诞生了。它通过维护一个运行于所有条目的双向链表,虽然增加了时间和空间上的开销,但是保证了元素
迭代
的
顺序
。该
迭代
顺序
可以是插入
顺序
或者是访问
顺序
。 源码分析
LinkedHashMap
继承HashM
LinkedHashMap
如何实现
迭代
时有序
LinkedHashMap
具有可预知的
迭代
顺序
,根据链表中元素的
顺序
可以分为:按插入
顺序
的链表,和按访问
顺序
(调用get方法)的链表。 默认是按插入
顺序
排序,如果指定按访问
顺序
排序,那么调用get方法后,会将这次访问的元素移至链表尾部,不断访问可以形成按访问
顺序
排序的链表。 可以重写removeEldestEntry方法返回true值指定插入元素时移除最老的元素。 如何实现
迭代
有序?
Java
50,528
社区成员
85,605
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章