1.flatMap
flatMap作用是为集合的每一个元素创建一个集合。并把所有集合合并成一个集合。
package com.example.kotlin01
val list = listOf(4, 1, 3, 5, 7, 9)
fun main() {
val result = list.flatMap {
listOf(1,2,3)
}
println(result)
}
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
为集合 list每一个元素创建一个集合(1,2,3),再把这些集合合并成一个集合。
2.groupBy
以集合的某个元素,或者某个元素的属性作为key进行分组value作为当前元素的对象集合返回一个map
package com.example.kotlin01
val list = listOf(User("小明", "男", 16), User("小明", "女", 18), User("小花", "女", 19))
fun main() {
val result = list.groupBy {
it.name
}
println(result.toString())
}
data class User(val name: String, val sex: String, val age: Int)
{小明=[User(name=小明, sex=男, age=16), User(name=小明, sex=女, age=18)], 小花=[User(name=小花, sex=女, age=19)]}
以user的name作为key,user的name一样的分到一个组作为value。返回一个map。以上有两个小明,所以分到了一个组,所以返回了一个长度为 2的map。
3.map
将集合的每个元素映射成其他类型,组装成新的集合。新的集合长度和原有的长度一样
package com.example.kotlin01
val list = listOf(User("小明", "男", 16), User("小明", "女", 18), User("小花", "女", 19))
fun main() {
val result = list.map {
it.name
}
println(result.toString())
}
data class User(val name: String, val sex: String, val age: Int)
[小明, 小明, 小花]
和flatMap不同的是,flatMap是为每个元素创建一个集合,然后把这些集合合并成一个集合。最终集合的长度和原来的集合长度不一定一样。
4.mapIndexed
为每一个索引设置新的元素,组装成新的集合
package com.example.kotlin01
val list = listOf(User("小明", "男", 16), User("小明", "女", 18), User("小花", "女", 19))
fun main() {
val result = list.mapIndexed { index, user ->
user.name
}
println(result)
}
data class User(val name: String, val sex: String, val age: Int)
[小明, 小明, 小花]
通过user.name组装成新的集合。我们在开发中也经常遇到这种需求,通过集合中某个对象的属性,组装成一个新的集合。
5.mapNotNull
mapNotNull和map的效果一样,只是mapNotNull过滤掉为null的元素
package com.example.kotlin01
val list = listOf(User("小明", "男", 16), User("小明", "女", 18), User("小花", "女", 19),null)
fun main() {
val result = list.map {
it?.name
}
println(result)
}
data class User(val name: String, val sex: String, val age: Int)
[小明, 小明, 小花]
通过user的name映射成一个新的集合,并且过滤掉null的。
6.小结
mapNotNull,mapIndexed,map都是通过某个属性或者某个数值把原有的集合映射成一个新的集合。最终集合的长度是一样的。groupBy则是通过某个key,对原有的集合进行分组,组成一个map。map的key就是我们分组的key,value就是符合条件的元素集合。flatMap则是将原有的集合的每一个元素创建一个集合,然后将这些集合合并成一个集合。
网友评论