Java HashMap打乱了它自己元素的顺序
尽管标题很简单,我已经搜索过了,但是我没有找到任何关于这个问题的信息,我很确定我只是误解了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<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}