java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Kotlin Map映射

Kotlin Map映射转换问题小结

作者:Kiri霧

文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/mapValues(转换Map键值)、flatten/flatMap(处理嵌套),适用于不同数据处理场景,感兴趣的朋友一起看看吧

Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、mapValues、flatten、flatMap

引言

在之前的主题中,我们学习了如何筛选(filter)排序(sort)集合。然而,处理集合时最重要的任务之一是转换集合中的元素。本主题将教你如何使用 Kotlin 的转换函数将一个集合转换为另一个集合。

映射(Mapping)

map()

示例:

val numbers = listOf(1, 2, 3)
println(numbers.map { it * 2 }) // [2, 4, 6]

mapIndexed()

val words = listOf("anne", "michael", "caroline")
println(words.mapIndexed { index, value ->
    if (index % 2 == 0) value.uppercase() else value
}) // [ANNE, michael, CAROLINE]

应用场景

可空类型的映射(Mapping with nullables)

如果某些元素无法转换,map() 会返回 null,集合变成 List<T?>。为避免 null,使用:

mapNotNull() / mapIndexedNotNull()

val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.map { if (it % 2 == 0) it else null }) // [null, 2, null, 4, null]
println(numbers.mapNotNull { if (it % 2 == 0) it else null }) // [2, 4]

映射 Map 类型(Map Mapping)

Kotlin 的 Map 类型可以使用以下两种方法转换:

mapKeys()

mapValues()

val map = mapOf(1 to "one", 2 to "two")
println(map.mapKeys { it.key * 2 }) // {2=one, 4=two}
println(map.mapValues { it.value.uppercase() }) // {1=ONE, 2=TWO}

Flatten(扁平化)

flatten()

val nested = listOf(listOf(1,2), listOf(3,4))
println(nested.flatten()) // [1, 2, 3, 4]

flatMap()

val nested = listOf(listOf(1,2), listOf(3,4))
println(nested.flatMap { it.map { it * 2 } }) // [2, 4, 6, 8]
val listOfMaps = listOf(mapOf(1 to "one"), mapOf(2 to "two"))
val result = listOfMaps.flatMap { it.entries }.associate { it.toPair() }
println(result) // {1=one, 2=two}

总结(Conclusion)

我们学到了多种转换集合的方式:

功能方法
一对一转换map()
一对一+索引mapIndexed()
过滤 null 结果mapNotNull()
Map 键值转换mapKeys() / mapValues()
多对一flatten()
一对多flatMap()

到此这篇关于Kotlin Map映射转换的文章就介绍到这了,更多相关Kotlin Map映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文