Метод hashCode() в Java и Kotlin используется для генерации целочисленного значения, представляющего объект. Он играет ключевую роль в работе коллекций, основанных на хеш-таблицах (HashMap, HashSet, Hashtable), где используется для быстрого определения "корзины" (bucket), в которой должен находиться или искаться объект. Ключевые моменты:
equals и hashCode: Если два объекта признаются "равными" методом equals(), то их hashCode() должен возвращать одинаковое значение. Обратное неверно: разные объекты могут иметь одинаковый хеш-код (коллизия).hashCode() по умолчанию (обычно основанная на адресе в памяти) может быть достаточной. Однако, если переопределяется equals(), необходимо переопределить и hashCode() для соблюдения контракта.hashCode() для неизменяемого объекта должно оставаться неизменным в течение его жизни. Для изменяемых объектов хеш-код может меняться, но это требует осторожности при использовании в хеш-коллекциях.Пример базовой реализации в Kotlin:
kotlin
Пример ручной реализации в Java (важно правильно комбинировать значения):
java