将键放在hashmap中并以相同的顺序检索

时间:2011-07-07 08:56:54

标签: 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], 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

现在我想按键的顺序与我的输入顺序相同。即首先应该是动作,然后是喜剧。但逆向秩序即将到来。

有人可以解释为什么会这样吗?我希望订单与文件夹内容相同。我怎样才能做到这一点?

3 个答案:

答案 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来保存订单。