Java HashMap打乱了它自己元素的顺序

Java HashMap打乱了它自己元素的顺序,java,hashmap,put,elements,Java,Hashmap,Put,Elements,尽管标题很简单,我已经搜索过了,但是我没有找到任何关于这个问题的信息,我很确定我只是误解了HashMap如何处理它自己的元素。 最简单的代码: HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("first key", 1); map.put("second key", 2); map.put("third key", 3); System.out

尽管标题很简单,我已经搜索过了,但是我没有找到任何关于这个问题的信息,我很确定我只是误解了HashMap如何处理它自己的元素。 最简单的代码:

HashMap<String, Integer> map = new HashMap<String, Integer>();
    map.put("first key", 1);
    map.put("second key", 2);
    map.put("third key", 3);

    System.out.println(map.toString());
我在程序员将HashMap存储的元素放入时对它们进行处理。 即使是排序也会在我将这些元素放入原点时对它们进行排序。 我试着换了词,类似的事情也发生了(只是位置变了,但他们还是“错了”):/ 你知道为什么吗

提前感谢:/


编辑:Rohit Jain实际上是第一个回答我作为评论的人,你们告诉我关于LinkedHashMap的事,所以你们帮我解决了,非常感谢:)

你们正在寻找保留插入顺序的密钥。

如果你们想按插入顺序迭代密钥,你们需要使用
LinkedHashMap
HashMap
明确指出

此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变


HashMap不保留顺序:

此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变--

你想要:


如果您只关心toString,那么也可以使用TreeMap。

HashMap不保证任何类型的排序

从:

此类不保证映射的顺序

如果要维护订单,可以使用。


此类不保证地图的顺序;特别是,它不能保证顺序随时间保持不变。

有不同的映射类型,对它们的键顺序有不同的保证(请参阅)

:其元素的未定义顺序

:通过插入定义的顺序

:由其元素的
compareTo()
方法定义的顺序


因此,HashMap不能保证它的迭代顺序。插入另一个元素后,将获得不同的顺序。根据你所描述的,
LinkedHashMap
可能就是你所需要的。

HashMap的文档告诉你什么?“[sic]当程序员将HashMap存储的元素放入“你怎么会这么想?正如我所说,我很确定我误解了它的工作原理,我是对的。”。多谢各位。这意味着,如果我想对它进行排序,它将是无用的:/即使现在我遇到了一个小问题o.o我尝试使用TreeMap,只是为了看看它是如何工作的,当我声明它的一个变量时,它用蓝色突出显示变量名(我使用eclipse),它应该用棕色突出显示它,它不是一个真正的变量o.o,因为我不能使用它,当我将光标穿过它时,我可以看到javadoc,但是我以前写过javadoc来写它,我知道我不应该这样做,但这只是我必须阅读的东西,我试着把同样的代码放到另一个类中,它工作了:(Nvm抱歉,这让我发疯了,我只是用一个方法lol-声明了它-
{third key=3, first key=1, second key=2}
    LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
    map.put("first key", 1);
    map.put("second key", 2);
    map.put("third key", 3);

    System.out.println(map.toString());
{first key=1, second key=2, third key=3}