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

Что нужно сделать для переопределения hashCode

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

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

Пример с классом Person:

java
@Override
public int hashCode() {
    int result = 17;
    result = 31 * result + name.hashCode();
    result = 31 * result + age;
    return result;
}

Лучшие практики:

  • Используйте те же поля, что и в equals()
  • Выбирайте простые числа (например, 31) для умножения
  • Для null-полей используйте 0 или другое константное значение
  • Для массивов используйте Arrays.hashCode()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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