Kotlin内置函数- 映射 map
2022-05-06 本文已影响0人
zcwfeng
-
映射 转换从另一个集合的元素上的函数结果创建一个集合。 基本的映射函数是
map()
。 它将给定的 lambda 函数应用于每个后续元素,并返回 lambda 结果列表。 结果的顺序与元素的原始顺序相同。 如需应用还要用到元素索引作为参数的转换,请使用mapIndexed()
。
val numbers = setOf(1, 2, 3)
println(numbers.map { it * 3 })
println(numbers.mapIndexed { idx, value -> value * idx })
------> result
[3, 6, 9]
[0, 2, 6]
- 如果转换在某些元素上产生
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 })
------> result
[3, 9]
[2, 6]
- 映射转换时,有两个选择:转换键,使值保持不变,反之亦然。 要将指定转换应用于键,请使用
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 })
------> result
{KEY1=1, KEY2=2, KEY3=3, KEY11=11}
{key1=5, key2=6, key3=7, key11=16}