如何从iterator()获取正确顺序的元素

San*_*osh 6 java iterator hashmap

这是我的代码,用于将数据存储到HashMap中并使用迭代器显示数据

public static void main(String args[]) {
    HashMap<String, String> hm = new HashMap<String, String>();
    hm.put("aaa", "111");
    hm.put("bbb", "222");
    hm.put("ccc", "333");
    hm.put("ddd", "444");
    hm.put("eee", "555");
    hm.put("fff", "666");

    Iterator iterator = hm.keySet().iterator();

    while (iterator.hasNext()) {
        String key = (String) iterator.next();
        String val = hm.get(key);

        System.out.println(key + " " + val);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有按照我存储的顺序显示.有人可以告诉我哪里出错了吗?我怎样才能获得订单中的元素?

Jac*_*cob 24

一个HashMap中有没有保证的顺序:

这个类不保证地图的顺序;

使用LinkedHashMap.

Map接口的哈希表和链表实现,具有可预测的迭代顺序.


dog*_*ane 7

您需要使用LinkedHashMap,因为它维护其条目的顺序,这与HashMap不同.

来自javadocs:

...具有可预测迭代顺序的Map接口的实现.此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表.此链接列表定义迭代排序,通常是键插入映射的顺序(插入顺序).