//Kotlin中变换函数map与flatmap
fun main() {
val list = listOf("张三", "李四", "王五")
//原理:把匿名函数最后一行的返回值加入一个新的集合,新集合的泛型是R,并且返回新集合
val list2: List<Int> = list.map {
//it == T == 元素 == String
"[$it]"
88
}
println(list2)
//用途:和RxJava的思路一样
val list3: List<String> = list.map {
"姓名是:$it"
}.map {
"$it,文字长度是:${it.length}"
}.map {
"[$it]"
}
for (s in list3) {
println("$s ")
}
//map{返回类型:T String Int Boolean... 把每一个元素加入到新的集合,最后返回List<String>}
//flatMap{返回类型:每一个元素T 集合1 集合2... 把每一个元素(集合)加入到新集合,最后返回新集合List<List<String>>
//最终内部会处理成List<String>
//flatMap 相当于List<List<String>>集合的集合,有嵌套关系
val list4: List<String> = listOf("张三", "李四", "王五")
val newList: List<String> = list4.map {
"内容是:$it" //每次返回一个 String
}.map {
"$it, 长度是:${it.length}"
}.flatMap {
listOf("$it,在学习C++", "$it,在学习Java", "$it,在学习Kotlin")
}
println(newList)
val newList2: List<String> = list.flatMap {
listOf("$it,在学习C++", "$it,在学习Java", "$it,在学习Kotlin")
}
println(newList2)
}