【发布时间】:2014-10-02 22:06:21
【问题描述】:
使用 Map 创建了一个简单的 java 应用程序来存储一些数据,然后迭代并打印键值。
Map<String,String> myMap = new HashMap<String,String>();
myMap.put("1", "1");
myMap.put("2", "2");
myMap.put("3", "3");
myMap.put("4", "4");
Iterator<String> it1 = myMap.keySet().iterator();
while(it1.hasNext()){
String key = it1.next();
System.out.println("Map key: "+key + " Map Value:"+myMap.get(key));
/* if(key.equals("2")){
myMap.put("1","4");
//myMap.put("4", "4");
}*/
}
即使我尝试使用不同的组合更改 put 方法,例如
myMap.put("4", "4");
myMap.put("1", "1");
myMap.put("3", "3");
myMap.put("2", "2");
但我不明白为什么我的程序总是以降序显示前 3 个对象。我无法追踪迭代器使用的排序方式..
Map key: 3 Map Value:3
Map key: 2 Map Value:2
Map key: 1 Map Value:1
Map key: 4 Map Value:4
【问题讨论】:
-
阅读HashMap的javadoc第一段的最后一句:docs.oracle.com/javase/7/docs/api/java/util/HashMap.html:这个类不保证map的顺序
-
-1 表示没有读取 HashMap 的 javadoc。