Kotlin内置函数- 合并 zip
2022-05-06 本文已影响0人
zcwfeng
-
合拢 转换是根据两个集合中具有相同位置的元素构建配对。 在 Kotlin 标准库中,这是通过
zip()
扩展函数完成的。 在一个集合(或数组)上以另一个集合(或数组)作为参数调用时,zip()
返回Pair
对象的列表(List
)。 接收者集合的元素是这些配对中的第一个元素。 如果集合的大小不同,则zip()
的结果为较小集合的大小;结果中不包含较大集合的后续元素。zip()
也可以中缀形式调用a zip b
。
val colors = listOf("red", "brown", "grey")
val animals = listOf("fox", "bear", "wolf")
println(colors zip animals)
val twoAnimals = listOf("fox", "bear")
println(colors.zip(twoAnimals))
------>
[(red, fox), (brown, bear), (grey, wolf)]
[(red, fox), (brown, bear)]
- 也可以使用带有两个参数的转换函数来调用 zip():接收者元素和参数元素。 在这种情况下,结果 List 包含在具有相同位置的接收者对和参数元素对上调用的转换函数的返回值。
val colors = listOf("red", "brown", "grey")
val animals = listOf("fox", "bear", "wolf")
println(colors.zip(animals) { color, animal -> "The ${animal.capitalize()} is $color"})
------>
[The Fox is red, The Bear is brown, The Wolf is grey]
- 当拥有
Pair
的List
时,可以进行反向转换 unzipping——从这些键值对中构建两个列表:
* 第一个列表包含原始列表中每个Pair
的键。
* 第二个列表包含原始列表中每个Pair
的值。
要分割键值对列表,请调用 unzip()
。
val numberPairs = listOf("one" to 1, "two" to 2, "three" to 3, "four" to 4)
println(numberPairs.unzip())
------>
([one, two, three, four], [1, 2, 3, 4])