使用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
答案 0 :(得分:2)
您无法保证从HashMap
接收元素的顺序。它唯一的保证就是拒绝重复项目的每次插入(因此,留下一组独特的项目)。
如果你想要两个保证,你会想要使用LinkedHashMap
来保证插入顺序。
答案 1 :(得分:1)
HashMap不保证元素的排序
如果需要订购,请使用LinkedHashMap(entry order)或TreeMap (sorted order)。
答案 2 :(得分:0)
因为HashMap
使用Hashing
函数存储元素..顺序由散列函数决定..
简单的单词Hasing
函数返回存储元素的存储位置。
了解更多详情click