我是靠谱客的博主 俊秀蜜粉,最近开发中收集的这篇文章主要介绍LinkedHashMap简单解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

源码版本1.7
本文参考:http://www.cnblogs.com/CarpenterLee/p/5541111.html
1、内部结构
节点的结构:
这里写图片描述

整体结构:
这里写图片描述

插入过程:
1、从table的角度看,新的entry需要插入到对应的bucket里,当有哈希冲突时,采用头插法将新的entry插入到冲突链表的头部。
2、从header的角度看,新的entry需要插入到双向链表的尾部。
这里写图片描述

删除过程:
1、从table的角度看,需要将该entry从对应的bucket里删除,如果对应的冲突链表不空,需要修改冲突链表的相应引用。
2、从header的角度来看,需要将该entry从双向链表中删除,同时修改链表中前面以及后面元素的相应引用。
这里写图片描述

访问的两种方式:
1、一种是按照插入元素时的顺序迭代,比如,插入A,B,C,那么迭代也是A,B,C,
2、另一种是按照访问顺序,比如,在迭代前,访问了B,那么迭代的顺序就是A,C,B,比如在迭代前,访问了B,接着又访问了A,那么迭代顺序为C,B,A,比如,在迭代前访问了B,接着又访问了B,然后在访问了A,迭代顺序还是C,B,A。要说明的意思就是不是近期访问的次数最多,就放最后面迭代,而是看迭代前被访问的时间长短决定。

最后

以上就是俊秀蜜粉为你收集整理的LinkedHashMap简单解析的全部内容,希望文章能够帮你解决LinkedHashMap简单解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部