Функция contentHashCode
Функция contentHashCode возвращает хэш-код,
основанный на содержимом массива. В отличие от
стандартного метода hashCode, который
возвращает хэш-код ссылки на объект, эта функция
вычисляет хэш-код на основе фактических элементов
массива. Функция работает только с массивами
примитивных типов и объектных типов.
Импорт
import kotlin.collections.contentHashCode
Синтаксис
fun <T> Array<out T>.contentHashCode(): Int
fun ByteArray.contentHashCode(): Int
fun ShortArray.contentHashCode(): Int
fun IntArray.contentHashCode(): Int
fun LongArray.contentHashCode(): Int
fun FloatArray.contentHashCode(): Int
fun DoubleArray.contentHashCode(): Int
fun BooleanArray.contentHashCode(): Int
fun CharArray.contentHashCode(): Int
Пример
Сравним работу hashCode() и contentHashCode()
для массива строк:
val 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())
Результат выполнения кода:
arr1.hashCode() = 1915910606
arr2.hashCode() = 930990596
arr1.contentHashCode() = 126145
arr2.contentHashCode() = 126145
Пример
Продемонстрируем работу функции с массивом целых чисел:
val numbers = intArrayOf(1, 2, 3, 4, 5)
val hashCode = numbers.contentHashCode()
println("Array: " + numbers.contentToString())
println("Content Hash Code: " + hashCode)
Результат выполнения кода:
Array: [1, 2, 3, 4, 5]
Content Hash Code: 23760081
Пример
Покажем, что хэш-код меняется при изменении содержимого массива:
val chars = charArrayOf('a', 'b', 'c')
val originalHash = chars.contentHashCode()
println("Original Hash: " + originalHash)
chars[2] = 'd'
val modifiedHash = chars.contentHashCode()
println("Modified Hash: " + modifiedHash)
Результат выполнения кода:
Original Hash: 126142
Modified Hash: 126143
Область применения
Функция contentHashCode работает только с массивами:
Array- массив объектов любого типаByteArray- массив байтовShortArray- массив коротких целых чиселIntArray- массив целых чиселLongArray- массив длинных целых чиселFloatArray- массив чисел с плавающей точкой одинарной точностиDoubleArray- массив чисел с плавающей точкой двойной точностиBooleanArray- массив логических значенийCharArray- массив символов
Для коллекций List, Set, Map и других
используйте стандартный метод hashCode(), который
уже учитывает содержимое коллекции.
Смотрите также
-
функцию
contentEquals,
которая сравнивает содержимое массивов -
функцию
contentToString,
которая преобразует массив в строковое представление -
функцию
contentDeepHashCode,
которая вычисляет хэш-код для многомерных массивов -
функцию
contentDeepEquals,
которая сравнивает содержимое многомерных массивов