Hashcode()和equals()的概念是:
1)如果根据equals()方法两个对象相等,则调用这两个对象的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()方法这两个不同的对象是不等的,但它们却有相同的哈希码。