下面是我用于在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());
}
输出是 -
keys in map are = Movies/HD/By Genre/Comedy
keys in map are = Movies/HD/By Genre/Action
现在我想按键的顺序与我的输入顺序相同。即首先应该是动作,然后是喜剧。但逆向秩序即将到来。
有人可以解释为什么会这样吗?我希望订单与文件夹内容相同。我怎样才能做到这一点?
答案 0 :(得分:1)
未定义散列中键的顺序。你想要一张地图。 Here's内部比较。
基本上,当你在哈希中放入某些内容时,你就会加密密钥。这是one-way function。 整点就是你无法解决它 - 这是一种将100个东西放在10个盒子里的方法。
答案 1 :(得分:1)
LinkedHashMap应该解决排序问题。 类似的问题和答案Order of values retrieved from a HashMap
答案 2 :(得分:-1)
您可以使用Apache的Commons-Collection库中的ListOrderedMap来保存订单。