如果条件发生,使用Java中的map.get(key)比较具有相同键的两个值,则得到奇怪的错误

时间:2018-12-28 07:23:16

标签: java hashmap

我有两个哈希图,每个哈希图代表一个字符串的字符数,即HashMap<Character, Integer>。我只想比较两个字符串是否具有完全相同的出现次数的相同字符。对于一次迭代,map1具有对('a',1913),而map2也是如此,在这种情况下,if条件不应该满足,但确实如此,这确实很奇怪。代码如下:

for (char key: map1.keySet()) {
    System.out.print(map1.get(key)) // 1913
    System.out.print(map2.get(key)) // 1913
    if(map1.get(key) != map2.get(key)) {
        System.out.print(map1.get(key)) // 1913
        System.out.print(map2.get(key)) // 1913
        return false; // run into this if condition
     }
}

但是,如果我改为写:

for (char key: map1.keySet()) {
    int num1 = map1.get(key) // 1913
    int num2 = map2.get(key) // 1913
    if(num1 != num2) {
        return false; // didn't run into this if condition
     }
}

我得到了书面答复。有人可以解释为什么这种超级奇怪的稀薄发生了吗?我假设如果条件相同的键,您不能两次使用map.get(key)?

0 个答案:

没有答案