scala高阶函数--flatmap和reduce

flatmap: 将一个元素拆分成多个元素

reduce: 聚合函数

package day3

object demo_high_func {
    def main(args: Array[String]): Unit = {
        val list = Array(1,2,3,4,5,6,7,7,7,8)
        // 过滤数组中的元素, 将为true的元素组合成一个新的数组
        val list2 = list.filter(e=>e%2==0)
        println(list2.mkString("[",",","]"))

        // map函数,对每个元素操作
        println("-" * 40 + "map" + "-" * 40)
        val list3 = list.map(n=>n * 10)
        println(list3.mkString("[",",","]"))

        println("-" * 40 + "flatMap" + "-" * 40)
        val words = Array("hello you", "hello me", "hello other")
        val flist = words.flatMap(word=>word.split(" "))
        println(flist.mkString("[",",","]"))

        println("-" * 40 + "reduce" + "-" * 40)
        //聚合函数, 啥意思看打印结果吧
        val relist = list.reduce((a1,a2)=>{
            println("v1= " + a1 + ",v2=" +a2)
            a1 + a2
        })
        // 普通写法
        val res = list.reduce((v1,v2)=>v1+v2)
        //简单写法
        val res1 =  list.reduce(_ + _)
        println(res)
        println(res1)
    }

}

打印结果:

[2,4,6,8]
----------------------------------------map----------------------------------------
[10,20,30,40,50,60,70,70,70,80]
----------------------------------------flatMap----------------------------------------
[hello,you,hello,me,hello,other]
----------------------------------------reduce----------------------------------------
v1= 1,v2=2
v1= 3,v2=3
v1= 6,v2=4
v1= 10,v2=5
v1= 15,v2=6
v1= 21,v2=7
v1= 28,v2=7
v1= 35,v2=7
v1= 42,v2=8
50
50

原文地址:https://www.cnblogs.com/kongzhagen/p/15154593.html