两个具有相同哈希码的不相等对象
Hashcode() 和 equals() 概念是
1) 如果根据 equal() 两个对象相等,则在这两个对象中的每个对象上调用哈希码方法应生成相同的哈希码。
另一个是
2)如果两个对象根据 equal() 不相等,则不需要在两个对象的每个对象上调用哈希码方法必须生成不同的值。
我尝试并理解了第一个,这是第一个点的代码。
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()不相等的两个不同的对象如何具有相同的哈希码。