• 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("[",",","]"))
        }
    
    }
  • 相关阅读:
    关于windows客户端网络编程 WSAAsyncSelect函数
    阻塞模式和非阻塞模式
    SRP6协议分析
    普通二叉树转换成二叉查找树方法
    使用openssl库进行开发
    类型转化,网络开发中常见的类型转化
    到底还能够称多久
    权限子系统小结
    使用ASP.NET AJAX开发服务器端事件通知器
    通用权限相关文档的下载
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/15159666.html
Copyright © 2020-2023  润新知