Концепция Hashcode() и equals() -
1) Если два объекта равны в соответствии с equal(), то вызов метода hashcode для каждого из этих двух объектов должен выдавать один и тот же хэш-код.
а другой -
2) Не требуется, чтобы, если два объекта не равны в соответствии с равным(), тогда вызов метода 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(), имеют один и тот же хэш-код.