按顺序迭代HashMap已设置

时间:2012-12-15 16:05:35

标签: java hashmap iteration

我已按某种顺序设置了HashMap,但它是在一个奇怪的命令上迭代的!

请考虑以下代码:

HashMap<String, String> map = new HashMap<String, String>();
map.put("ID", "1");
map.put("Name", "the name");
map.put("Sort", "the sort");
map.put("Type", "the type");

...

for (String key : map.keySet()) {
    System.out.println(key + ": " + map.get(key));
}

结果:

Name: the name
Sort: the sort
Type: the type
ID: 1

我需要迭代它以便我输入条目。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:23)

这就是HashMap内部工作的方式。将HashMap替换为另外记住插入顺序的LinkedHashMap

Map<String, String> map = new LinkedHashMap<String, String>();

答案 1 :(得分:20)

顺序取决于您插入的键中hashCode()函数的结果,除非您做了一些奇怪的事情,否则它将主要是随机的(但是一致的)。你要找的是一个有序的地图,如LinkedHashMap

如果您对细节感兴趣,请查看hashtables如何在这里工作。