Java 将键放入hashmap并按相同顺序检索

Java 将键放入hashmap并按相同顺序检索,java,hashmap,Java,Hashmap,下面是我用来在hashmap中插入值的一段代码 String[] folders={"Movies/HD/By Genre/Action","Movies/HD/By Genre/Comedy"}; HashMap<String, String> sdsResults = new HashMap<String, String>(); for(int i=0; i<folders.length; i++){ sdsResults.put(folders[i]

下面是我用来在hashmap中插入值的一段代码

String[] folders={"Movies/HD/By Genre/Action","Movies/HD/By Genre/Comedy"};
HashMap<String, String> sdsResults = new HashMap<String, String>();

for(int i=0; i<folders.length; i++){
    sdsResults.put(folders[i], null);
}

Iterator<String> itr = sdsResults.keySet().iterator();
while(itr.hasNext()){
    System.out.println("keys in map are = "+itr.next());
}
现在我想让钥匙的顺序和我放进去的顺序一样。i、 首先是动作片,然后是喜剧。但相反的顺序正在到来


有人能解释为什么会这样吗?我希望顺序与文件夹内容相同。如何实现这一点?

哈希中的键顺序没有定义。你想要张地图。内部构件的比较


基本上,当你把一些东西放到散列中时,你就把密钥置乱了。这是一个很好的例子。关键是你不能取消它——这是一种把100件东西放在10个盒子里的方法。

LinkedHashMap应该可以解决订购问题。
类似的问题和这里的答案

您可以使用Apache的Commons集合库中的ListOrderedMap来保持顺序。

那么是否有其他方法可以按特定顺序获取密钥。我可以使用的任何其他集合类型映射都是正确的抽象数据类型。可能有不同的实现(二叉树、跳过列表等),当然,您可以始终维护单独的密钥向量!
keys in map are = Movies/HD/By Genre/Comedy
keys in map are = Movies/HD/By Genre/Action