Функция hashCode

Функция hashCode возвращает целочисленное значение, которое представляет хэш-код объекта. Каждый объект в Kotlin имеет свой хэш-код, который используется в различных структурах данных, таких как HashSet, HashMap и других хэш-таблицах для эффективного хранения и поиска объектов. По умолчанию функция возвращает значение, основанное на адресе объекта в памяти, но может быть переопределена в пользовательских классах.

Синтаксис

kotlinopen fun hashCode(): Int

Пример

Получим хэш-код строки:

kotlinval str = "abcde"
val res = str.hashCode()
println(res)

Результат выполнения кода:

kotlinInt 92599395

Пример

Получим хэш-код числа:

kotlinval num = 12345
val res = num.hashCode()
println(res)

Результат выполнения кода:

kotlinInt 12345

Пример

Сравним хэш-коды двух одинаковых строк:

kotlinval str1 = "abcde"
val str2 = "abcde"
val res1 = str1.hashCode()
val res2 = str2.hashCode()
println(res1 == res2)

Результат выполнения кода:

kotlinBoolean true

Пример

Переопределим функцию hashCode в пользовательском классе:

kotlinclass Person(val name: String, val age: Int) {
  override fun hashCode(): Int {
    var result = name.hashCode()
    result = 31 * result + age
    return result
  }
}

val person = Person("John", 25)
val res = person.hashCode()
println(res)

Результат выполнения кода:

kotlinInt 105878145

Пример

Проверим работу хэш-кода в HashSet:

kotlinval set = HashSet<String>()
set.add("abcde")
set.add("abcde")
println(set.size)

Результат выполнения кода:

kotlinInt 1

Смотрите также

  • функцию equals,
    которая сравнивает объекты на равенство
  • функцию toString,
    которая возвращает строковое представление объекта
  • класс Any,
    который является корневым суперклассом для всех классов Kotlin
  • интерфейс HashMap,
    который использует хэш-коды для хранения пар ключ-значение