Scala实现WordCount简易案例
下面的代码是在IDEA中进行单词计数的小案例
object WordCount {
def main(args: Array[String]): Unit = {
//定义一个List
val list = List("java scala java","scala python scala")
//处理原始数据,获取每个word
val words = list.flatMap(_.split(" "))
println(words)//List(java, scala, java, scala, python, scala)
//改变格式,为元组(word,1)
val wordOne = words.map((_,1))
println(wordOne)//List((java,1), (scala,1), (java,1), (scala,1), (python,1), (scala,1))
//根据(word,1)中的key值 word 进行分组
val wordG = wordOne.groupBy(_._1)
println(wordG)//Map(scala -> List((scala,1), (scala,1), (scala,1)), java -> List((java,1), (java,1)), python -> List((python,1)))
//获取map中的value,对value中的tuple的._2(也就是1)进行统计(也就是叠加)
val wordCount = wordG.mapValues(_.foldLeft(0)(_+_._2))
println(wordCount)//Map(scala -> 3, java -> 2, python -> 1)
/**/
}
}