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"
键是相等的加上哈希码也是相等的,但是为什么它们不会被覆盖?我在接受采访时向我询问,但我无法回答。
答案 0 :(得分:1)
您的两个HashMaps是不同的对象,每个对象都有自己的键和值。没有理由期望一个中的键和值被另一个中的键和值覆盖。
答案 1 :(得分:1)
这是因为它们在逻辑上和物理上都是独立的对象。考虑是否要在其中一个HashMap中添加新值,您希望它在另一个地图中吗?