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

Как переопределяешь hashCode

Для переопределения hashCode() в Java нужно следовать контракту:

  1. Если equals() возвращает true для двух объектов, их hashCode() должен быть одинаковым
  2. Если equals() возвращает false, hashCode() может быть разным (но не обязан)
  3. hashCode() должен возвращать одинаковое значение для одного объекта при многократных вызовах

Пример с использованием Objects.hash() (Java 7+):

java
@Override
public int hashCode() {
    return Objects.hash(field1, field2, field3);
}

Классический подход (до Java 7):

java
@Override
public int hashCode() {
    int result = 17;
    result = 31 * result + field1.hashCode();
    result = 31 * result + (field2 != null ? field2.hashCode() : 0);
    return result;
}

Важно включать все значимые поля, которые участвуют в equals(). Числа 17 и 31 часто используются как начальное значение и множитель, так как они простые и помогают избежать коллизий.

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

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

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

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