Equals - решения для правильного сравнения

Метод equals() является одним из наиболее распространенных методов в Java. Он используется для сравнения двух объектов на равенство. Если два объекта равны, то метод equals() должен возвращать true, если они не равны, то метод должен возвращать false.

Сигнатура метода equals() в Java выглядит так:


public boolean equals(Object obj)

В качестве аргумента методу передается ссылка на другой объект, который мы сравниваем с текущим объектом.

Переопределить метод equals() следует, если мы сами создаем какой-то класс, и хотим сравнивать объекты этого класса на равенство. При этом можно использовать свою логику сравнения в соответствии с требованиями к нашему классу.

Рассмотрим пример. Пусть у нас есть класс Person, который содержит информацию о человеке: имя и возраст.


public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return this.getName().equals(other.getName()) && this.getAge() == other.getAge();
    }
}

Метод equals() в этом классе переопределен. Внутри метода сначала проверяем, не является ли переданный объект ссылкой на текущий объект. Если да, то возвращаем true, т.к. объекты равны.

Затем проверяем, является ли объект с которым мы сравниваем Person. Если нет, то считаем, что объекты не равны.

В конце сравниваем поля объекта с полями переданного в equals() объекта.

Использование метода equals() будет выглядеть следующим образом:


Person person1 = new Person("John", 25);
Person person2 = new Person("John", 25);
boolean equal = person1.equals(person2);
System.out.println(equal); // true

В данном случае мы создали два объекта класса Person с одинаковыми именем и возрастом. Вызов метода equals() вернет true, потому что объекты равны.

Отметим, что переопределение метода equals() является часто используемой практикой в Java, поскольку это позволяет сравнивать объекты на основе особенностей конкретного класса, а не значений их ссылок.

Похожие вопросы на: "equals "

50 секунд назад: когда прошлое теряет свою силу
Услуги по запросу: заказ услуг онлайн
Python Del - удаляем элементы из списков с помощью Python!
Java String Split: синтаксис и примеры использования метода
Что такое Bool в программировании и как им пользоваться?
SQLCMD: управление сервером баз данных без графического интерфейса
Сортировка массива: методы и примеры
<h1>Input Number
Валидация HTML
AT C: современные решения для успешного бизнеса