zoukankan      html  css  js  c++  java
  • scala高阶函数--groupby/sortby/patition

    package day3
    
    object demo_high_func {
        def main(args: Array[String]): Unit = {
            val list = Array(1,2,3,4,5,6,7,7,7,2,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)
    
            println("-" * 40 + "drowhile" + "-" * 40)
            val droplist = list.dropWhile(n=>n!=3)
            println(droplist.mkString("[",",","]"))
    
            println("-" * 40 + "sortwith" + "-" * 40)
            val newlist = Array(1,3,8,4,-1,7,6,10)
            val sortlist = newlist.sortWith((n1,n2)=>n1>n2) // 从大到小排序
            val sortlist2 = newlist.sortWith(_ > _)  // 简写
            println(newlist.mkString("[",",","]"))
            println(sortlist.mkString("[",",","]"))
            println(sortlist2.mkString("[",",","]"))
    
            println("-" * 40 + "groupby" + "-" * 40)
            // 相当于sql中的group by , 返回值为不可变的map类型
            val wordmap:Map[String,Array[String]] = flist.groupBy(word => word)
    //        println(wordmap.mkString("[",",","]"))
            wordmap.foreach(kv=>println(kv._1,kv._2.mkString("[",",","]")))
    
            println("-" * 40 + "partition" + "-" * 40)
            // 将一个集合分成两个, 能被2整除的放一个集合, 返回两个集合
            val(left, right) = newlist.partition(n => n%2==0)
            println(left.mkString("[",",","]"))
            println(right.mkString("[",",","]"))
        }
    
    }
    package day3
    
    object demo_high_func {
        def main(args: Array[String]): Unit = {
            val list = Array(1,2,3,4,5,6,7,7,7,2,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)
    
            println("-" * 40 + "drowhile" + "-" * 40)
            val droplist = list.dropWhile(n=>n!=3)
            println(droplist.mkString("[",",","]"))
    
            println("-" * 40 + "sortwith" + "-" * 40)
            val newlist = Array(1,3,8,4,-1,7,6,10)
            val sortlist = newlist.sortWith((n1,n2)=>n1>n2) // 从大到小排序
            val sortlist2 = newlist.sortWith(_ > _)  // 简写
            println(newlist.mkString("[",",","]"))
            println(sortlist.mkString("[",",","]"))
            println(sortlist2.mkString("[",",","]"))
    
            println("-" * 40 + "groupby" + "-" * 40)
            // 相当于sql中的group by , 返回值为不可变的map类型
            val wordmap:Map[String,Array[String]] = flist.groupBy(word => word)
    //        println(wordmap.mkString("[",",","]"))
            wordmap.foreach(kv=>println(kv._1,kv._2.mkString("[",",","]")))
    
            println("-" * 40 + "partition" + "-" * 40)
            // 将一个集合分成两个, 能被2整除的放一个集合, 返回两个集合
            val(left, right) = newlist.partition(n => n%2==0)
            println(left.mkString("[",",","]"))
            println(right.mkString("[",",","]"))
        }
    
    }
  • 相关阅读:
    洛谷P2505||bzoj2750 [HAOI2012]道路 && zkw线段树
    洛谷 P3462 [POI2007]ODW-Weights
    Xor-MST Codeforces
    101 to 010 Atcoder CODE FESTIVAL 2017 qual B D
    bzoj2125 最短路
    洛谷P1823 [COI2007] Patrik 音乐会的等待
    洛谷 P1121 环状最大两段子段和
    noip2017 逛公园
    洛谷 P1578 奶牛浴场
    洛谷 P1169||bzoj1057 [ZJOI2007]棋盘制作
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/15159666.html
Copyright © 2011-2022 走看看