Если метод equals() переопределен в классе Java, то обычно также следует переопределить метод hashCode(). Это связано с тем, что hashCode() используется вместе с equals() при работе с хеш-таблицами и другими коллекциями, которые хранят элементы на основании их хеш-кодов. Если equals() переопределен, а hashCode() - нет, то могут возникнуть проблемы с поиском и удалением элементов в коллекциях.
Вот пример переопределения этих методов для класса Person:
public class Person {
private String name;
private int age;
// constructor, getter and setter methods...
@Override public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override public int hashCode() {
return Objects.hash(name, age);
}
}
Здесь метод equals() сравнивает имя и возраст двух объектов класса Person, а метод hashCode() использует имя и возраст для вычисления их хеш-кода.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov