Почему мне нужно переопределить методы equals и hashCode в Java?

В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Object), то вызов метода hashCode для каждого из двух объектов должен давать одинаковый целочисленный результат. Вы должны переопределить hashCode() в каждом классе, который переопределяет equals(). Несоблюдение этого требования приведет к нарушению общего договора для Object.hashCode(), что предотвратит правильное функционирование вашего класса в сочетании со всеми коллекциями на основе хэшей, включая HashMap, HashSet и Hashtable. Если вы не переопределите hashcode(), то реализация по умолчанию в классе Object будет использоваться коллекциями. Эта реализация дает разные значения для разных объектов, даже если они равны в соответствии с методом equals().

hashCode()()

Метод hashcode() возвращает метод хэш-кода для этой строки. HashCode() используется для bucketing в реализациях Hash, таких как HashMap, HashTable, HashSet и т. Д. Значение, полученное от hashCode(), используется как номер ведра для хранения элементов набора / карты. Этот номер ведра является адресом элемента внутри набора / карты.

equals()

Этот конкретный метод используется для обеспечения равного сравнения между двумя объектами. В Java существует два типа сравнений. Один использует оператор «==», а другой - «equals()».

Источник: http://net-informations.com/Java/cJava/hashcode.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector