Java Core middle

Что такое Контракт equals/hashCode?

Ответ

Если a.equals(b) == true, то a.hashCode() == b.hashCode(). Обратное необязательно (коллизии допустимы). equals(null) → false. Переопределяешь один — переопределяй оба. Практический пример: положить объект в HashSet — иначе он не найдётся.

Разбор: Контракт односторонний: равные объекты обязаны иметь равные хэши, но равные хэши НЕ обязывают объекты быть равными (коллизии законны). equals(null) всегда false, а переопределять нужно оба метода согласованно. Ловушка дистракторов — попытка сделать связь двусторонней или объявить хэши обязательно уникальными.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться