Зачем нужен метод hashCode в Kotlin

«Зачем нужен метод hashCode в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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

  1. Если два объекта равны (equals() возвращает true), их hashCode() должен быть одинаковым.
  2. Обратное не обязательно: разные объекты могут иметь одинаковый hashCode() (коллизии).
data class Person(val name: String, val age: Int)

val person1 = Person("Alice", 25)
val person2 = Person("Alice", 25)

println(person1.hashCode() == person2.hashCode()) // true, т.к. equals true

Для data class Kotlin автоматически генерирует hashCode() на основе свойств. В обычных классах нужно переопределять hashCode() вручную, если переопределён equals().