filter
val arrayOf = listOf<Int>(1, 2, 3, 4)
println(arrayOf.filter { it % 2 == 0 }.joinToString())
输出
2, 4
map
val list = listOf<Int>(1, 2, 3, 4)
println(list.map { it * 3 }.joinToString())//3, 6, 9, 12
filter+map
val list = listOf<Int>(1, 2, 3, 4)
list.filter {
println("filter=$it")
it % 2 == 0
}.map {
println("map=$it")
it * 3
}.forEach {
println(it)
}
输出
filter=1
filter=2
filter=3
filter=4
map=2
map=4
6
12
- filter 执行完才往下执行map
- filter 遇到为true 的元素才往下执行
asSequence
list.asSequence().filter {
println("filter=$it")
it % 2 == 0
}.map {
println("map=$it")
it * 3
}
- 如果不加forEach 不能输出任何结果,懒序列(相当于水龙头没有打开)
flatMap
flod
val list = listOf(1,5)
val sumDoubled = list.fold(10) { sum, element -> sum + element }
- 10+1 =11 ;11+5 =16
reduce
val list = listOf(1, 5)
println(list.reduce { sum, element -> sum + element }) //6
- 与flod 区别在于第一个元素不会被倍加
sum
val list = listOf(1, 5)
println(list.sum())// 6
- 返回数字集合中元素的总和;
- 不支持String