Hashcode() 和 equals() 概念是
1) 如果两个对象根据 equal() 相等,则对这两个对象中的每一个调用 hashcode 方法应该产生相同的 hashcode。
另一个是
2) 如果两个对象根据equal() 不相等,则不要求对两个对象中的每一个调用hashcode 方法必须产生不同的值。
我尝试并理解了第一个,这是第一点的代码。
public class Test {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 11);
map.put(4, 11);
System.out.println(map.hashCode());
Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();
map1.put(1, 11);
map1.put(4, 11);
System.out.println(map1.hashCode());
if (map.equals(map1)) {
System.out.println("equal ");
}
}
}
上面的程序为两个不同的对象提供了相同的哈希码。
有人可以用一个例子来解释我吗,根据 equals() 不相等的两个不同对象如何具有相同的哈希码。