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 "

Response - Инструмент для быстрого реагирования на любые запросы
Wikia - свободная энциклопедия на любую тему
Gzip: простой способ ускорить загрузку вашего сайта
Масштабные модели Scale 1 1
Разработка игр с помощью библиотеки Raylib
<h1>cout cin: основные функции ввода и вывода в C++
Как изменить надпись "печатает" в Телеграмме
Array Fill - заполнение массивов в программировании
EPS C: экспандированный пенополистирол высокого качества по выгодным ценам
10000000000000000 - сайт на тему