按设置的顺序迭代哈希映射

2022-09-02 19:19:15

我已经在某个顺序上设置了一个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

我需要迭代它,以便我放置了条目。任何帮助将不胜感激。


答案 1

这就是内部的工作方式。替换为LinkedHashMap,它还可以记住插入的顺序:HashMapHashMap

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

答案 2

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

如果您对细节感兴趣,请在此处查看有关哈希表如何工作的一些信息。