Scala学习-6.5集合练习

/**
综合练习
*/
object Demo {
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
  
  //练习1:统计出所有人的年龄和
  val l1=List(("tom","M",23),("rose","F",18),("jim","M",30),("jary","M",25))
                                                  //> l1  : List[(String, String, Int)] = List((tom,M,23), (rose,F,18), (jim,M,30)
                                                  //| , (jary,M,25))
  
  val r1=l1.map{x=>x._3}.sum                      //> r1  : Int = 96
  val r2=l1.map{case(name,gender,age)=>age}.sum   //> r2  : Int = 96
  
  //练习2:返回男性年龄最高的前两个人的数据,返回的形式:List("jim-M","jary-M")
  val r3=l1.filter{x=>x._2.equals("M")}
                   .sortBy{x=> -x._3}
                   .take(2)
                   .map{x=>x._1+"-"+x._2}
                                                  //> r3  : List[String] = List(jim-M, jary-M)
  //练习3:操作l2,返回按地区分组的结果
  val l2=List(("bj",1),("sh",2),("bj",3),("sh",4))//> l2  : List[(String, Int)] = List((bj,1), (sh,2), (bj,3), (sh,4))
  
  val r4=l2.groupBy{x=>x._1}                      //> r4  : scala.collection.immutable.Map[String,List[(String, Int)]] = Map(bj ->
                                                  //|  List((bj,1), (bj,3)), sh -> List((sh,2), (sh,4)))
  
  
  //练习4:统计出l3中的单词频次。最后统计出的结果:Map(hello->3,world->2,scala->1)
  val l3=List("hello world","hello scala","hello world")
                                                  //> l3  : List[String] = List(hello world, hello scala, hello world)
  val r5=l3.flatMap { line =>line.split(" ") }
                   .groupBy { word => word }
                   .map{case(k,v)=>(k,v.length)}
                                                  //> r5  : scala.collection.immutable.Map[String,Int] = Map(scala -> 1, world -> 
                                                  //| 2, hello -> 3)
  val r6=l3.flatMap { line =>line.split(" ") }
                   .groupBy { word => word }
                   .mapValues { v => v.length }
                                                  //> r6  : scala.collection.immutable.Map[String,Int] = Map(scala -> 1, world -> 
                                                  //| 2, hello -> 3)
                   
  //练习5:接着往下写,统计出单词频次。不能使用length或size方法
  //可以使用sum或reduce来统计出频次
  val r7=l3.flatMap { line => line.split(" ") }
                   .map { word =>(word,1) }
                   .groupBy{x=>x._1}
                   .mapValues{list=>list.map{x=>x._2}.sum}
                                                  //> r7  : scala.collection.immutable.Map[String,Int] = Map(scala -> 1, world ->
                                                  //|  2, hello -> 3)
  val r8=l3.flatMap {_.split(" ") }
                   .map {(_,1) }
                   .groupBy{_._1}
                   .mapValues{_.map{_._2}.sum}
                                                  //> r8  : scala.collection.immutable.Map[String,Int] = Map(scala -> 1, world ->
                                                  //|  2, hello -> 3)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容