1.filter关键字
val list = listOf(0,1,2,3,4,5,6)
val list2 = list.filter {
it % 2 == 0
}
list2.forEach {
println(it)
}
打印日志:
2021-06-08 00:03:38.594 11697-11697/com.example.myapplication I/System.out: 0
2021-06-08 00:03:38.594 11697-11697/com.example.myapplication I/System.out: 2
2021-06-08 00:03:38.594 11697-11697/com.example.myapplication I/System.out: 4
2021-06-08 00:03:38.594 11697-11697/com.example.myapplication I/System.out: 6
在kotlin里面可以通过filter筛选集合组成一个新的集合,非常方便。
2.map关键字
val list = listOf(0, 1, 2, 3, 4, 5, 6)
val list2 = list.map {
it * 2 + 10
}
list2.forEach {
println(it)
}
控制台打印结果:
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 10
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 12
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 14
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 16
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 18
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 20
2021-06-08 00:08:24.287 13353-13353/com.example.myapplication I/System.out: 22
map可以将集合中的元素进行一定的数学处理组成一个新的集合。
3.集合序列
val list = listOf(0, 1, 2, 3, 4, 5, 6)
list.asSequence().filter {
println("filter-->$it")
it % 2 == 0
}.map {
println("map-->$it")
it * 2 + 9
}.forEach {
println("foreach-->$it")
}
控制台打印:
16605-16605/com.example.myapplication I/System.out: filter-->0
16605-16605/com.example.myapplication I/System.out: map-->0
16605-16605/com.example.myapplication I/System.out: foreach-->9
16605-16605/com.example.myapplication I/System.out: filter-->1
16605-16605/com.example.myapplication I/System.out: filter-->2
16605-16605/com.example.myapplication I/System.out: map-->2
16605-16605/com.example.myapplication I/System.out: foreach-->13
16605-16605/com.example.myapplication I/System.out: filter-->3
16605-16605/com.example.myapplication I/System.out: filter-->4
16605-16605/com.example.myapplication I/System.out: map-->4
16605-16605/com.example.myapplication I/System.out: foreach-->17
16605-16605/com.example.myapplication I/System.out: filter-->5
16605-16605/com.example.myapplication I/System.out: filter-->6
16605-16605/com.example.myapplication I/System.out: map-->6
16605-16605/com.example.myapplication I/System.out: foreach-->21
asSequence()我们可以看成水流,会让变换依次执行,foreach相当于水龙头,如果没有foreach,不会有打印。