java - 我可以信任 HashMap 迭代器顺序吗?

标签 java hashmap

我想比较 2 个 HashMap 对象,并且我想迭代值集合,比如 this answer .

但是我可以确定 2 个对象迭代器将按照相同的顺序进行吗?

如果没有,我想过下一个,但它不太好看:

public class MyObject {
    HashMap<Integer, String> myMap = new HashMap<Integer, String>();

    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof MyObject))
            return false;

        MyObject other = (MyObject)obj;

        if(this.myMap.size() != other.myMap.size())
            return false;

        for (Iterator<Entry<Integer, String>> it = myMap.entrySet().iterator(); it.hasNext(); ) {
            Entry<Integer, String> entry = it.next();
            String otherValue = other.myMap.get(entry.getKey());
            if(otherValue == null || !entry.getValue().equals(otherValue))
                return false;
        }
        return true;
    }
}

最佳答案

如果您也想比较插入顺序,请使用LinkedHashMap

代替

HashMap<Integer, String> myMap = new HashMap<Integer, String>();

使用

Map<Integer, String> myMap = new LinkedHashMap<>();

关于java - 我可以信任 HashMap 迭代器顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59477432/

相关文章:

java - 如何在jtable中取消一个单元格的焦点并聚焦另一个单元格?

java - 检查 Activity 互联网连接 Android

java - ArrayList 以某种方式清除,我不知道为什么

java - HashMap:以随机顺序迭代键值对

Java变量初始化?

java - 在 IntelliJ IDEA 中在哪里添加 -ea 等编译器选项?

java - 在 Java 中缓存和重用不可变单例对象的最佳方法是什么?

clojure - 创建 HashMap Clojure

java - 在运行时更改哈希码

java - 我希望能够撤消在 JTextArea 中所做的更改