Метод equals() в классе Object по умолчанию проверяет, одинаковые ли два объекта, сравнивая их по ссылкам в памяти. Если переопределить этот метод, то можно задать собственную логику сравнения на основе твоих конкретных требований, вместо того чтобы полагаться на идентичность объектов.
Собственная логика сравнения
Person с одинаковыми именами и возрастом должны считаться равными, даже если это разные экземплярыHashMap и коллекции
HashMap или других хеш-коллекциях, нужно переопределить equals(), чтобы правильно сравнивать ключиequals() HashMap не сможет корректно определить дубликаты ключейДля класса Person с полями имя, фамилия и возраст:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return firstName.equals(person.firstName) &&
lastName.equals(person.lastName) &&
age == person.age;
}
hashCode() – если переопределяешь equals(), то обязательно переопредели и hashCode(), чтобы соблюдать контракт: равные объекты должны иметь одинаковые хеш-кодыПо умолчанию метод equals() в классе Object сравнивает объекты на основе значений их атрибутов, поэтому переопределение необходимо только когда тебе нужно сравнение по ссылке.
Новый — ещё не проверен сообществом
Вы