我已按某种顺序设置了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
我需要迭代它以便我输入条目。 任何帮助将不胜感激。
答案 0 :(得分:23)
这就是HashMap
内部工作的方式。将HashMap
替换为另外记住插入顺序的LinkedHashMap
:
Map<String, String> map = new LinkedHashMap<String, String>();
答案 1 :(得分:20)
顺序取决于您插入的键中hashCode()
函数的结果,除非您做了一些奇怪的事情,否则它将主要是随机的(但是一致的)。你要找的是一个有序的地图,如LinkedHashMap
如果您对细节感兴趣,请查看hashtables如何在这里工作。