filter

  1. val arrayOf = listOf<Int>(1, 2, 3, 4)
  2. 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