点击上方蓝色文字关注我哦
一天一点kotlin,稳打稳扎成自我。
Kotlin 标准库为集合 转换 提供了一组扩展函数。这些函数根据提供的转换规则从现有集合中构建新集合。在此页面中,我们将概述可用的集合转换函数。
映射
映射 转换从另一个集合的元素上的函数结果创建一个集合。基本的映射函数是 map()。它将给定的 lambda 函数应用于每个后续元素,并返回 lambda 结果列表。结果的顺序与元素的原始顺序相同。如需应用还要用到元素索引作为参数的转换,请使用 mapIndexed()。
val numbers = setOf(1, 2, 3)
println(numbers.map { it * 3 })
println(numbers.mapIndexed { idx, value -> value * idx })
如果转换在某些元素上产生 null 值,则可以通过调用 mapNotNull() 函数取代 map() 或 mapIndexedNotNull() 取代 mapIndexed() 来从结果集中过滤掉 null 值。
val numbers = setOf(1, 2, 3)
println(numbers.mapNotNull { if ( it == 2) null else it * 3 })
println(numbers.mapIndexedNotNull { idx, value -> if (idx == 0) null else value * idx })
映射转换时,有两个选择:转换键,使值保持不变,反之亦然。要将指定转换应用于键,请使用 mapKeys();反过来,mapValues() 转换值。这两个函数都使用将映射条目作为参数的转换,因此可以操作其键与值。
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)
println(numbersMap.mapKeys { it.key.toUpperCase() })
println(numbersMap.mapValues { it.value + it.key.length })
双路合并
双路合并 转换是根据两个集合中具有相同位置的元素