HashMap messes up the order of its own elements
简单的标题,我已经搜索过了,我没有找到关于这个问题的任何内容,我很确定我只是误解了HashMap如何使用自己的元素。
超级简单的代码:
1 2 3 4 5 6 |
println()方法显示什么?
它显示了这个:
1 | {third key=3, first key=1, second key=2} |
当程序员把它们放入时,我强调了HashMap存储的元素。
即使是排序也会将这些元素放在原点上。
我尝试改变单词和类似的事情发生(只有位置改变了,但无论如何它们都是"错误的")。:/
你知道为什么吗?
提前致谢 :/
编辑:Rohit Jain实际上是第一个回答我评论的人,你们告诉我关于LinkedHashMap的事情,所以你帮我解决了,非常感谢你:)
如果要按插入顺序迭代键,则需要使用
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
这个类不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
HashMap不保证任何类型的订购。
来自java文档:
This class makes no guarantees as to the order of the map
如果要维护订单,可以使用LinkedHashMap。
HashMap不保留顺序:
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time. --javadoc
你想要LinkedHashMap:
1 2 3 4 5 6 |
输出:
1 | {first key=1, second key=2, third key=3} |
如果你关心的只是toString,你也可以使用TreeMap。
您正在寻找保留插入订单的
有不同的Map类型,对其键顺序给出不同的保证(见此)。
因此,HashMap不保证它的迭代顺序。插入另一个元素后,您将获得不同的顺序。根据您的描述,