Встречается на собеседованиях • сегодня
Почему объекты по equals могут быть не равны при равных hashCode
В Java equals() и hashCode() должны быть согласованы: если объекты равны по equals(), их hashCode() должен быть одинаковым. Однако обратное неверно - равные hashCode() не гарантируют равенство по equals() (коллизия хэшей).
Пример:
java
String a = "FB";
String b = "Ea";
System.out.println(a.hashCode() == b.hashCode()); // true (коллизия)
System.out.println(a.equals(b)); // falseПричины:
- Коллизии хэш-функции - разные объекты могут иметь одинаковый хэш
- Некорректная реализация
hashCode()(например, константа для всех объектов) - Изменение состояния объекта после добавления в хэш-коллекцию

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы