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)
}
}