如何确保在Java中遍历HashMap时无法更改密钥的顺序?

时间:2015-08-05 09:07:51

标签: java hashmap

例如,我输入3个字符串:Hagzou Hugzou Jigxng作为HashMap的键,

但是当我按键遍历HashMap时,订单已被更改:Hugzou Hagzou Jigxng。

输出密钥时是否可以确保订单无法更改?

像这样:

输入:Hagzou Hugzou Jigxng ###

输出:Hagzou Hugzou Jigxng

很多!

这是我的代码:

    HashMap< String, Integer > distance = new HashMap< String, Integer >(); 
    Scanner input = new Scanner(System.in);     
    while (true) {
        String city = input.next();
        if (city.equals("###"))
            break;
        distance.put(city, null);
    }
    for (String city : distance.keySet()) {
        System.out.println(city);
    }

1 个答案:

答案 0 :(得分:1)

您可以使用LinkedHashMap

  

使用Hash表和Map接口的链表实现   可预测的迭代顺序。此实现与HashMap不同   因为它维护着一个贯穿所有链接的双向链表   条目。该链表定义了迭代排序,即   通常是键插入地图的顺序   (插入顺序)。请注意,如果键是插入顺序不受影响   被重新插入地图。 (如果将密钥k重新插入到地图m中   当m.containsKey(k)返回true时,调用m.put(k,v)   在调用之前。)

换句话说 - 虽然LinkedHashMap有一种通过哈希码访问条目的方法,但是常规HashMap它也维护一个双向链表,并维护项插入的顺序。这样,当您使用其迭代器时,您将按照插入它们的顺序获取项目。