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

Какие знаешь способы переопределения hashCode

В Java hashCode() можно переопределить несколькими способами:

  1. Ручной расчет на основе полей класса:
java
@Override
public int hashCode() {
    int result = 17;
    result = 31 * result + field1.hashCode();
    result = 31 * result + (field2 != null ? field2.hashCode() : 0);
    return result;
}
  1. Использование Objects.hash() (Java 7+):
java
@Override
public int hashCode() {
    return Objects.hash(field1, field2, field3);
}
  1. Генерация IDE (IntelliJ IDEA/Eclipse обычно генерируют похожий на первый вариант код)

  2. Использование Lombok аннотации:

java
@EqualsAndHashCode
public class MyClass { ... }

Ключевые правила:

  • Если equals() возвращает true, hashCode() должен возвращать одинаковые значения
  • Желательно использовать простые числа (31, 17) для минимизации коллизий
  • Примитивные поля можно хэшировать через Integer.hashCode(), Double.hashCode() и т.д.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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