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 "

Цикл for в Python: for i in range
Style List: Your Ultimate Fashion Resource
CSS Checkbox: Styling and Customization Techniques
Округление в меньшую сторону в Python
Как обновить субмодули в Git: руководство по команде submodule update
Python Import From: The Ultimate Guide
JS Value Input: Get and Set Values of HTML Input Elements
Валидация HTML
Classpath Java: описание и использование
Сборщик мусора Java: эффективное управление памятью