为什么两个哈希映射不覆盖彼此的值?

Why doesn't two hashmaps override values of each other?

public static void main(String[] args) {
    HashMap<Integer, String> hashMap1 = new HashMap<Integer, String>();
    HashMap<Integer, String> hashMap2 = new HashMap<Integer, String>();

    hashMap1.put(1, "Ram");
    hashMap1.put(2, "Mitali");
    hashMap1.put(2, "Gaurav");

    hashMap2.put(1, "Ram");
    hashMap2.put(2, "Test");
    System.out.println("hashMap1 values : ");
    for(Map.Entry<Integer, String> entry : hashMap1.entrySet()) {
        System.out.println("Hashcode of " + entry.getKey() + ":" + entry.getKey().hashCode());
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }

    System.out.println("hashMap2 values : ");
    for(Map.Entry<Integer, String> entry : hashMap2.entrySet()) {
        System.out.println("Hashcode of " + entry.getKey() + ":" + entry.getKey().hashCode());
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

输出为:

hashMap1 values : 
Hashcode of 1:1
1:Ram
Hashcode of 2:2
2:Gaurav
hashMap2 values : 
Hashcode of 1:1
1:Ram
Hashcode of 2:2
2:Test

当来自不同映射的所有键的哈希码相等且键也相等时,为什么不将两个映射都覆盖为:

1, "Ram"
2, "Test"

键值相等加上哈希码也相等,但为什么它们没有被覆盖?这是在采访中问我的,我无法回答。

你的两个 HashMap 是不同的对象,每个都有自己的键和值。没有理由期望一个中的键和值被另一个中的键和值覆盖。

因为它们在逻辑上和物理上都是独立的对象。考虑一下如果你想在一个 HashMap 中添加新值,你会期望它在另一个 map 中吗?