Что такое hashCode у Object в Java

«Что такое hashCode у Object в Java» — вопрос из категории Java, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

hashCode() — это метод класса Object в Java, возвращающий целочисленное значение (хеш-код), которое используется для быстрого сравнения объектов в коллекциях, таких как HashMap, HashSet и т.д.

Основные правила:

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

Пример:

@Override
public int hashCode() {
    int prime = 31;
    int result = 1;
    result = prime * result + (int) (id ^ (id >>> 32));
    result = prime * result + name.hashCode();
    return result;
}

Если не переопределить hashCode(), используется реализация Object, которая обычно возвращает адрес объекта в памяти.