【问题标题】:Iterating HashMap on order it has been set按已设置的顺序迭代 HashMap
【发布时间】:2012-12-03 08:19:17
【问题描述】:

我已按特定顺序设置了 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

我需要对其进行迭代,以便我放置条目。 任何帮助将不胜感激。

【问题讨论】:

标签: java hashmap iteration


【解决方案1】:

这就是HashMap 在内部的工作方式。将HashMap 替换为LinkedHashMap,它还会记住插入的顺序:

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

【讨论】:

    【解决方案2】:

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

    如果您对详细信息感兴趣,请在此处了解hashtables 的工作原理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-23
      • 2012-09-30
      • 2010-12-25
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多