Scala 实现 WordCount

Scala 不得不说非常灵活方便,只是语法相较Java比较复杂
下面看一下Scala 如何实现 wordcount,简写竟然真的只要一行代码,我看湿了

在这里插入图片描述
贴上代码:

package com.amhu.yx.test1

object WordCount {
  def main(args: Array[String]): Unit = {
    val lines = List("兰 亭 临 帖", "行 书 如 行 云 流 水")
    println(lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x => (x._1, x._2.size)).toList.sortBy(_._2))
}
}

下面是完整版:
在这里插入图片描述
在这里插入图片描述
代码:

package com.amhu.yx.test1

object WordCount {
  def main(args: Array[String]): Unit = {
    val lines = List("兰 亭 临 帖", "行 书 如 行 云 流 水")

    //val res = lines.flatMap((s: String) => s.split(" "))
    val res1 = lines.flatMap(_.split(" "))
    println(res1)

    //val res2 = res1.map((s: String) => (s,1))
    val res2 = res1.map((_,1))
    println(res2)

    //分组,将不同的单词分到不同的组中
    //val res3 = res2.groupBy((x:(String,Int)) => x._1)
    val res3 = res2.groupBy(_._1)
    println(res3)

    //对上面的元组进行统计大小
    //val res4 = res3.map((x:(String,List[(String,Int)])) => (x._1, x._2.size))
    val res4 = res3.map(x => (x._1, x._2.size))
    println(res4)

    //val res5 = res4.toList.sortBy((x: (String, Int)) => x._2)
    val res5 = res4.toList.sortBy(_._2)
    println(res5)
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_45468845/article/details/106269036