Как сравнить два объекта в java
Ответы
Иван Полежаев
06 апреля 2023
Для сравнения двух объектов в Java
используется метод equals()
. Метод equals()
сравнивает содержимое двух объектов на равенство.
По умолчанию метод equals()
сравнивает два объекта на идентичность, то есть проверяет, указывают ли они на один и тот же объект в памяти. Однако, часто требуется сравнить объекты по содержимому, а не по ссылке на объект.
Чтобы сравнить объекты по содержимому, необходимо переопределить метод equals()
в классе объекта. Для этого нужно реализовать логику сравнения внутри метода, которая определяет, что два объекта равны друг другу.
Например, для класса Person
, метод equals()
может быть реализован следующим образом:
public class Person {
private String name;
private int age;
// конструктор и методы класса
@Override
public boolean equals(Object obj) {
if (obj == this) { // проверка на идентичность
return true;
}
if (!(obj instanceof Person)) { // проверка типа объекта
return false;
}
Person other = (Person) obj; // приведение объекта к типу Person
return this.name.equals(other.name) && this.age == other.age; // сравнение содержимого
}
}
- в данном примере метод
equals()
сначала проверяет идентичность объектов и тип объекта, - затем сравнивает содержимое объектов - поля
name
иage
, - если оба поля равны у двух объектов, то метод возвращает
true
, иначе -false
. *** Для сравнения объектов также можно использовать оператор==
Он проверяет идентичность объектов, то есть указывают ли они на один и тот же объект в памяти. Однако, если объекты имеют разные ссылки на память, но содержат одинаковое содержимое, оператор==
вернетfalse
, в то время как методequals()
может вернутьtrue
, если переопределен правильно.
0
0