HashMap 中的一个“坑”!(3)

简介: HashMap 中的一个“坑”!(3)

以上程序的执行结果如下:


微信图片_20220120233800.jpg


从上述结果可以看出,当使用 LinkedHashMap 替代了 HashMap  之后,返回的顺序就能和插入的顺序保持一致了。


LinkedHashMap 的魔力


为什么 HashMap 是无序的,而 LinkedHashMap 却是有序的呢?


这要从二者的实现说起了,LinkedHashMap 属于 HashMap 的子类,所以 LinkedHashMap  除了拥有 HashMap 的所有特性之后,还具备自身的一些扩展属性,其中就包括 LinkedHashMap 中额外维护了一个双向链表,这个双向链表就是用来保存元素的(插入)顺序的,这也是为什么 LinkedHashMap 可以实现访问顺序和插入顺序一致的原因了。


总结


本文演示了 HashMap 作为返回类型时隐藏的一个小“坑”,因为 HashMap 本身是无序的,所以它会导致查询顺序和插入顺序不一致的问题,对应的解决方案有两种:使用确定的数据类型来替代 HashMap,比如 List,或者使用有序的 LinkedHashMap 来替代无序的 HashMap。

相关文章
AutoJs源码---神级大分享
AutoJs源码---神级大分享
431 0
|
JavaScript
JS 如何动态获取本地文件夹中的所有图片
JS 如何动态获取本地文件夹中的所有图片
1000 0
|
数据安全/隐私保护
xshell 安装包(百度网盘)+安装过程&连接虚拟机注意事项
xshell 安装包(百度网盘)+安装过程&连接虚拟机注意事项
xshell 安装包(百度网盘)+安装过程&连接虚拟机注意事项
|
11月前
|
机器学习/深度学习 传感器 TensorFlow
使用 Python 实现深度学习模型:智能食品质量控制
使用 Python 实现深度学习模型:智能食品质量控制
189 0
|
网络协议 Linux
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
|
Ubuntu 虚拟化 Windows
将Vmware虚拟机磁盘映射到本地实现文件传输
将虚拟机磁盘映射到本地,可以实现文件互传,更方便使用,在开发时可以替代SecureFx等FTP客户端软件
1010 0
AD2428W手册解读之概述 下
AD2428W手册解读之概述 下
AD2428W手册解读之概述 下
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
SQL 消息中间件 关系型数据库
Flink报错问题之cdc任务报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
SQL JSON Apache
Flink SQL问题之复杂JSON解析如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
1091 0