Реализовать метод сравнение 2-х объектов Person

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 и других хеш-коллекциях.