Scala | Scala集合的综合练习

综合练习:

val l1=List((“tom”,“M”,23),(“rose”,“F”,18),(“jim”,“M”,30),(“jary”,“M”,25))

  • 练习1:统计出所有人的年龄和
  • 练习2:返回男性年龄最高的前两个人的数据,返回的形式:List(“jim-M”,“jary-M”)

val l2=List((“bj”,1),(“sh”,2),(“bj”,3),(“sh”,4))

  • 练习3:操作l2,返回按地区分组的结果

val l3=List(“hello world”,“hello scala”,“hello world”)

  • 练习4:统计出l3中的单词频次。最后统计出的结果:Map(hello->3,world->2,scala->1)
  • 练习5:统计出单词频次。不能使用length或size方法(可以使用sum或reduce来统计出频次)
object Demo09 {
     
  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)
}

你可能感兴趣的:(#,Scala语言,大数据,scala)