功能区别
- map:对集合中的每个元素应用给定的变换函数,返回一个新的集合,新集合的元素数量与原集合相同,只是每个元素都经过了变换函数的处理。
- flatMap:首先对集合中的每个元素应用给定的变换函数,该函数返回一个集合,然后将所有这些返回的集合“扁平化”成一个单一的集合。
使用场景区别
- map:当需要对集合中的每个元素进行独立的变换,且变换结果不需要合并时使用。例如,将一个整数集合中的每个数乘以2。
- flatMap:当对每个元素进行变换后得到的结果是集合,并且需要将这些集合合并成一个集合时使用。例如,有一个字符串集合,每个字符串需要拆分成单词,最后得到一个包含所有单词的单一集合。
代码示例
map示例
val numbers = listOf(1, 2, 3)
val doubledNumbers = numbers.map { it * 2 }
println(doubledNumbers)
flatMap示例
val sentences = listOf("Hello world", "Goodbye")
val words = sentences.flatMap { it.split(" ") }
println(words)