Какой тип данных возвращает метод hashCode() в Java?

«Какой тип данных возвращает метод hashCode() в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод hashCode() всегда возвращает значение примитивного типа int (32-битное целое число).

Назначение: Это число используется хэш-таблицами (такими как HashMap, HashSet, Hashtable) для эффективного распределения и поиска объектов.

Пример:

String text = "Example";
int hashValue = text.hashCode(); // Возвращает int
System.out.println(hashValue); // Например, -1531488098

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

  1. Согласованность с equals(): Если два объекта равны согласно методу equals(Object obj), то их хэш-коды, возвращаемые hashCode(), обязаны быть одинаковыми. Обратное не всегда верно (коллизии).
  2. Отрицательные значения: Хэш-код может быть как положительным, так и отрицательным.
  3. Консистентность: При многократных вызовах на одном и том же объекте (в рамках одного выполнения приложения) hashCode() должен возвращать одно и то же значение, при условии, что поля, участвующие в расчете equals, не изменялись.