Функция hashCode
Функция hashCode возвращает целочисленное значение,
которое представляет хэш-код объекта. Каждый объект в Kotlin
имеет свой хэш-код, который используется в различных структурах
данных, таких как HashSet, HashMap и других
хэш-таблицах для эффективного хранения и поиска объектов.
По умолчанию функция возвращает значение, основанное на
адресе объекта в памяти, но может быть переопределена
в пользовательских классах.
Синтаксис
open fun hashCode(): Int
Пример
Получим хэш-код строки:
val str = "abcde"
val res = str.hashCode()
println(res)
Результат выполнения кода:
Int 92599395
Пример
Получим хэш-код числа:
val num = 12345
val res = num.hashCode()
println(res)
Результат выполнения кода:
Int 12345
Пример
Сравним хэш-коды двух одинаковых строк:
val str1 = "abcde"
val str2 = "abcde"
val res1 = str1.hashCode()
val res2 = str2.hashCode()
println(res1 == res2)
Результат выполнения кода:
Boolean true
Пример
Переопределим функцию hashCode в пользовательском классе:
class 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)
Результат выполнения кода:
Int 105878145
Пример
Проверим работу хэш-кода в HashSet:
val set = HashSet<String>()
set.add("abcde")
set.add("abcde")
println(set.size)
Результат выполнения кода:
Int 1