Встречается на собеседованиях • сегодня
Почему нельзя использовать equals не переопределяя его
По умолчанию equals() наследуется от Object и сравнивает ссылки, а не содержимое объектов. Это значит, что даже если два объекта имеют одинаковые поля, equals() вернет false, если это разные экземпляры.
Пример:
java
class Person {
String name;
Person(String name) { this.name = name; }
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false - сравниваются ссылки
text
Для корректного сравнения нужно переопределять `equals()`, учитывая значимые поля объекта. При этом важно также переопределять `hashCode()`, чтобы соблюдать контракт: равные объекты должны иметь одинаковый хэш-код.
Не переопределенный `equals()` может привести к ошибкам в коллекциях (`HashSet`, `HashMap`), где сравнение объектов критично.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы