java.util.Map中的迭代器

时间:2014-08-09 15:41:28

标签: java map iterator

使用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

3 个答案:

答案 0 :(得分:2)

您无法保证从HashMap接收元素的顺序。它唯一的保证就是拒绝重复项目的每次插入(因此,留下一组独特的项目)。

如果你想要两个保证,你会想要使用LinkedHashMap来保证插入顺序。

答案 1 :(得分:1)

HashMap不保证元素的排序

如果需要订购,请使用LinkedHashMap(entry order)TreeMap (sorted order)

答案 2 :(得分:0)

因为HashMap使用Hashing函数存储元素..顺序由散列函数决定..
简单的单词Hasing函数返回存储元素的存储位置。

了解更多详情click