Java HashMap VS LinkHashMap

最新在梳理Java,顺便分享记录下,供大家参考。从以下几个地方对比阐述两个类的异同。

存储结构

HashMap


HashTable

说明:table 是一个entery列表,其中第i的位置存储所有hash之后index为i的entry,相同index的entr用链表存储。

LinkHashMap

LinkHashMap

相对HashMap,LinkHashMap多了一个双向队列,新添加entry首先按照HashMap的方式存储在table中,同时会将entry加入队列的队尾。

遍历方式

HashMap

HashMap遍历方式

由以上代码可以看出HashMap是一个“深度优先”的遍历方式,按照index顺序,优先遍历每个index对应的entry链。那么我们很容易得出,entry遍历输出的顺序不是存储的顺序。

LinkHashMap


LinkHashMap遍历方式

LinkHashMap遍历方式是按照双向队列的顺序遍历整个entry链。由此可见entry遍历的顺序是存储的顺序。

总结一下:

1. LinkHashMap 比 HashMap多一个双向队列,用于存储遍历。

2. Hash输出是无序的,LinkHashMap输出则是有序的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容