Функция zip

Функция zip объединяет две коллекции в одну новую коллекцию, состоящую из пар элементов. Каждая пара содержит элемент из первой коллекции и соответствующий элемент из второй коллекции. Результирующая коллекция имеет размер, равный минимальному размеру из исходных коллекций.

Синтаксис

Для Iterable, List, Set:

kotlininfix fun <T, R> Iterable<T>.zip(other: Iterable<R>): List<Pair<T, R>>

Для Array:

kotlininfix fun <T, R> Array<out T>.zip(other: Array<out R>): List<Pair<T, R>>

Для Map (работает с ключами):

kotlininfix fun <K, V, R> Map<out K, V>.zip(other: Iterable<R>): List<Pair<Pair<K, V>, R>>

Пример

Объединим два списка с помощью функции zip:

kotlinval list1 = listOf('a', 'b', 'c')
val list2 = listOf(1, 2, 3)
val res = list1.zip(list2)
println(res)

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

kotlinList<Pair<Char, Int>> [(a, 1), (b, 2), (c, 3)]

Пример

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

kotlinval arr1 = arrayOf('a', 'b', 'c')
val arr2 = arrayOf(1, 2, 3)
val res = arr1.zip(arr2)
println(res)

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

kotlinList<Pair<Char, Int>> [(a, 1), (b, 2), (c, 3)]

Пример

Функция zip работает с множествами:

kotlinval set1 = setOf('a', 'b', 'c')
val set2 = setOf(1, 2, 3)
val res = set1.zip(set2)
println(res)

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

kotlinList<Pair<Char, Int>> [(a, 1), (b, 2), (c, 3)]

Пример

Если коллекции разного размера, результат будет иметь размер минимальной коллекции:

kotlinval list1 = listOf('a', 'b', 'c', 'd')
val list2 = listOf(1, 2, 3)
val res = list1.zip(list2)
println(res)

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

kotlinList<Pair<Char, Int>> [(a, 1), (b, 2), (c, 3)]

Пример

Функцию можно использовать в инфиксной форме:

kotlinval list1 = listOf('a', 'b', 'c')
val list2 = listOf(1, 2, 3)
val res = list1 zip list2
println(res)

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

kotlinList<Pair<Char, Int>> [(a, 1), (b, 2), (c, 3)]

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

  • функцию unzip,
    которая разделяет коллекцию пар на две коллекции
  • функцию flatMap,
    которая преобразует каждый элемент в коллекцию и объединяет результаты
  • функцию map,
    которая преобразует каждый элемент коллекции
  • функцию plus,
    которая объединяет две коллекции в одну