2013-07-28 27 views
2
HashMap<String, String[]> content = new HashMap<String, String[]>(); 

    content.put("Help", new String[]{"About"}); 
    content.put("View", new String[]{"Grid"}); 
    content.put("File", new String[]{"Import", "Export"}); 

    for(String key : content.keySet()){ 
     System.out.println(key); 
    } 

上面的代码日志:HashMap的键集自动排序

View 
Help 
File 

但是为什么这个排序?

+1

运行两次,三次,更多..你会看到不同的结果。 –

+0

偶然。添加更多的键,你会看到它没有排序。 – kiheru

+0

重新启动了10次,但始终是相同的顺序。 –

回答

14
  1. HashMap中完全不会有什么关于迭代顺序的保证。它可以(并且将)甚至在添加新元素时完全改变。

  2. 的LinkedHashMap将在该项目中投入的地图

Source

+1

关于2声明。您可以创建LinkedHashMap,它将按访问顺序而不是插入顺序迭代。插入顺序只是默认的一个。 –

3

上的哈希码中,你看到HashMap这些项目的顺序取决于顺序迭代关键和桶中的条目的顺序,我相信它是依赖于实现的,但不要依赖HashMap进行排序。而LinkedHashMapTreeMap确实保证了某个顺序。