Java HashMap key为Integer时,遍历是有序还是无序?

背景

最近用到了一个开源库,在它基础上进行开发,内部用到了Map<Integer, Object>这样的类型,其次还要将map遍历并按照key从小到大的顺序一次生成文件。

奇怪就奇怪在这:原作者并没有去做sort排序,而是直接

这样子进行遍历,转存文件。

后面我去网上查了下,确实有人解释这个事情:

HashMap的key为Integer时为什么有序

看到这我也就没在深究了,既然都说是有序了,我也不用管了吧。

突发故障

今天突然收到故障通知,说我这个打出的包有问题,我一看日志

不是说有序的吗?怎么变成无序了呢?

这里原因就不深究了,本来官方就没说有序,是有人自己测试了下发现有序就得出 key是Integer就有序的结论。。。

我在网上也看到有人分析说 这个有序是不可靠的,数据多了会无序。参考:HashMap不是无序的吗?为什么会自动排序后输出_Robert_Jen的技术博客_51CTO博客

这里告诫大家:千万不要用这个骚操作。

解决方案

老老实实重新把key做了排序。

相关推荐
BD_Marathon28 分钟前
MyBatis:配置文件完成增删改查_添加
java·mybatis
程序员JerrySUN30 分钟前
深度理解 KVM:Linux 内核系统学习的重要角度
java·linux·学习
BTU_YC39 分钟前
Neo4j Python 驱动库完整教程(带输入输出示例)
开发语言·python·neo4j
曾几何时`42 分钟前
分别使用Cypher与python构建neo4j图谱
开发语言·python·机器学习
屁股割了还要学1 小时前
【C语言进阶】题目练习(2)
c语言·开发语言·c++·学习·算法·青少年编程
Hello.Reader1 小时前
Go-Redis 入门与实践从连接到可观测,一站式掌握 go-redis v9**
开发语言·redis·golang
编程小白gogogo2 小时前
Student后台管理系统查询接口
java·spring·mybatis
007php0072 小时前
使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
java·开发语言·redis·python·nginx·php·swoole
枯萎穿心攻击2 小时前
响应式编程入门教程第五节:Unity 生命周期与资源管理中的响应式编程
开发语言·unity·架构·c#·游戏引擎
Mr_Xuhhh2 小时前
Qt窗口(2)-工具栏
java·c语言·开发语言·数据库·c++·qt·算法