Функция contentHashCode

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

Импорт

kotlinimport kotlin.collections.contentHashCode

Синтаксис

kotlinfun <T> Array<out T>.contentHashCode(): Int
kotlinfun ByteArray.contentHashCode(): Int
kotlinfun ShortArray.contentHashCode(): Int
kotlinfun IntArray.contentHashCode(): Int
kotlinfun LongArray.contentHashCode(): Int
kotlinfun FloatArray.contentHashCode(): Int
kotlinfun DoubleArray.contentHashCode(): Int
kotlinfun BooleanArray.contentHashCode(): Int
kotlinfun CharArray.contentHashCode(): Int

Пример

Сравним работу hashCode() и contentHashCode() для массива строк:

kotlinval arr1 = arrayOf("a", "b", "c")
val arr2 = arrayOf("a", "b", "c")

println("arr1.hashCode() = " + arr1.hashCode())
println("arr2.hashCode() = " + arr2.hashCode())
println("arr1.contentHashCode() = " + arr1.contentHashCode())
println("arr2.contentHashCode() = " + arr2.contentHashCode())

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

kotlinarr1.hashCode() = 1915910606
arr2.hashCode() = 930990596
arr1.contentHashCode() = 126145
arr2.contentHashCode() = 126145

Пример

Продемонстрируем работу функции с массивом целых чисел:

kotlinval numbers = intArrayOf(1, 2, 3, 4, 5)
val hashCode = numbers.contentHashCode()

println("Array: " + numbers.contentToString())
println("Content Hash Code: " + hashCode)

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

kotlinArray: [1, 2, 3, 4, 5]
Content Hash Code: 23760081

Пример

Покажем, что хэш-код меняется при изменении содержимого массива:

kotlinval chars = charArrayOf('a', 'b', 'c')
val originalHash = chars.contentHashCode()

println("Original Hash: " + originalHash)

chars[2] = 'd'
val modifiedHash = chars.contentHashCode()

println("Modified Hash: " + modifiedHash)

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

kotlinOriginal Hash: 126142
Modified Hash: 126143

Область применения

Функция contentHashCode работает только с массивами:

Для коллекций List, Set, Map и других используйте стандартный метод hashCode(), который уже учитывает содержимое коллекции.

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

  • функцию contentEquals,
    которая сравнивает содержимое массивов
  • функцию contentToString,
    которая преобразует массив в строковое представление
  • функцию contentDeepHashCode,
    которая вычисляет хэш-код для многомерных массивов
  • функцию contentDeepEquals,
    которая сравнивает содержимое многомерных массивов