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