Встречается на собеседованиях • сегодня

Что такое контракт hashCode

Контракт hashCode() в Java определяет три обязательных правила:

  1. Консистентность: Если объект не изменялся, hashCode() должен возвращать одно и то же значение при каждом вызове (в рамках одного выполнения программы).
  2. Равенство объектов: Если два объекта равны по equals(), их hashCode() должен быть одинаковым.
  3. Обратное не обязательно: Разные hashCode() у объектов не гарантируют, что они не равны по equals(), но это улучшает производительность хэш-структур (например, HashMap).

Пример нарушения контракта:

java
class BadHash {
    int id;
    @Override
    public boolean equals(Object o) { /* сравнение по id */ }
    // Нет переопределения hashCode()
}

Такой класс вызовет проблемы в HashSet или HashMap, так как равные объекты могут попасть в разные корзины.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы