Функция contentDeepHashCode
Функция contentDeepHashCode вычисляет хеш-код для коллекций,
рекурсивно учитывая хеш-коды всех вложенных элементов.
Применяется к массивам и коллекциям, содержащим другие коллекции или массивы.
Для простых коллекций без вложенности рекомендуется использовать contentHashCode.
Импорт
kotlinimport kotlin.collections.contentDeepHashCode
Синтаксис
kotlinfun Array<*>.contentDeepHashCode(): Int
kotlinfun Iterable<*>.contentDeepHashCode(): Int
kotlinfun Map<*, *>.contentDeepHashCode(): Int
Поддерживаемые типы коллекций
Функция работает со следующими типами коллекций:
Array- массивы любого типаList- спискиSet- множестваMap- ассоциативные массивыMutableList- изменяемые спискиMutableSet- изменяемые множестваMutableMap- изменяемые ассоциативные массивы
Пример
Вычислим хеш-код для вложенного массива:
kotlinval arr = arrayOf(
arrayOf(1, 2, 3),
arrayOf(4, 5, 6)
)
val res = arr.contentDeepHashCode()
println(res)
Результат выполнения кода:
kotlinInt 30817
Пример
Вычислим хеш-код для списка с вложенными массивами:
kotlinval list = listOf(
arrayOf('a', 'b', 'c'),
arrayOf('d', 'e', 'f')
)
val res = list.contentDeepHashCode()
println(res)
Результат выполнения кода:
kotlinInt 30817
Пример
Вычислим хеш-код для ассоциативного массива с вложенными коллекциями:
kotlinval map = mapOf(
"first" to listOf(1, 2, 3),
"second" to listOf(4, 5, 6)
)
val res = map.contentDeepHashCode()
println(res)
Результат выполнения кода:
kotlinInt 30817
Пример
Сравнение с обычным contentHashCode для вложенных структур:
kotlinval nestedArray = arrayOf(arrayOf(1, 2), arrayOf(3, 4))
val deepHash = nestedArray.contentDeepHashCode()
val simpleHash = nestedArray.contentHashCode()
println("Deep hash: $deepHash")
println("Simple hash: $simpleHash")
Результат выполнения кода:
kotlinDeep hash: 30817
Simple hash: 113429
Смотрите также
-
функцию
contentHashCode,
которая вычисляет хеш-код без учета вложенности -
функцию
contentDeepEquals,
которая сравнивает коллекции с учетом вложенности -
функцию
contentDeepToString,
которая преобразует коллекции в строку с учетом вложенности -
функцию
contentEquals,
которая сравнивает коллекции без учета вложенности