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

Что такое правило hashCode

Правило hashCode гласит, что если два объекта равны по equals(), их хэш-коды должны быть одинаковыми. Обратное необязательно: разные объекты могут иметь одинаковый хэш-код (коллизия). Это правило критично для корректной работы hash-коллекций (HashMap, HashSet).

Пример нарушения:

java
class Person {
    String name;
    // equals сравнивает только name
    @Override public int hashCode() { return name.length(); } // плохо: зависит только от длины
}

Если equals учитывает только name, но hashCode зависит от длины имени, два объекта с разными именами одинаковой длины будут иметь одинаковый хэш-код, что допустимо, но два равных объекта с разной длиной имени (невозможно по equals) — нарушение.

Идеальный hashCode должен:

  1. Быть консистентным (одинаковым при многократных вызовах)
  2. Минимизировать коллизии
  3. Быстро вычисляться

Пример правильной реализации:

java
@Override 
public int hashCode() {
    return Objects.hash(name, age); // учитывает все поля из equals
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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