64. Сравнить два объекта Person
Условие задачи:
Необходимо переопределить методы equals() и hashCode() для класса Person.
Два объекта считаются равными, если у них совпадают поля firstName, lastName и age.
Код:
class Person {
String firstName;
String lastName;
Integer age;
}
Спойлеры к решению
Подсказки
💡 Сначала проверь сравнение объекта с самим собой.
💡 Обработай
💡 Для безопасного сравнения полей используй
💡 Вместе с
💡 Обработай
null и объект другого класса.💡 Для безопасного сравнения полей используй
Objects.equals().💡 Вместе с
equals() необходимо переопределить hashCode().Решение
class Person {
String firstName;
String lastName;
Integer age;
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null || getClass() != object.getClass()) {
return false;
}
Person person = (Person) object;
return Objects.equals(firstName, person.firstName)
&& Objects.equals(lastName, person.lastName)
&& Objects.equals(age, person.age);
}
@Override
public int hashCode() {
return Objects.hash(firstName, lastName, age);
}
}
Проверка this == object быстро определяет сравнение объекта с самим собой.
Objects.equals() корректно сравнивает значения, даже если одно или оба поля равны null.
Метод hashCode() использует те же поля, что и equals(). Это необходимо для корректной работы объектов Person в HashSet, HashMap и других хеш-коллекциях.