• 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

  • 相关阅读:
    P2207 Photo
    P1022 计算器的改良
    P1003 铺地毯
    P3014 [USACO11FEB]牛线Cow Line && 康托展开
    P4180 【模板】严格次小生成树[BJWC2010]
    P2776 [SDOI2007]小组队列
    P2426 删数
    P1948 [USACO08JAN]电话线Telephone Lines
    P1978 集合
    P1564 膜拜
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/15154593.html
Copyright © 2020-2023  润新知