wordcount案例
object Demo17Wordcount {
def main(args: Array[String]): Unit = {
//1、读取文件数据
val bs: BufferedSource = Source.fromFile("data/words.txt")
//2、读取一行行数据转成List,因为list中方法多,一行数据就是list一个元素
val lines: List[String] = bs.getLines().toList
//3、将一行行数据切分成一个个单词
val word: List[String] = lines.flatMap(_.split(","))
//4、按照每个单词分组,返回二元组(map),k为单词,v为所有符合的单词构成的List
//直接求后面list的长度就是分组内元素的个数
val groupby: Map[String, List[String]] = word.groupBy(word=>word)
//5、将map遍历出来求v的长度就是格式
groupby.map(kv=>{
val key: String = kv._1 //key
val value: List[String] = kv._2 //value
val num: Int = value.size //value为一个list,求长度
(key,num) //返回
}).foreach(println) //打印
//简写,链式调用
Source.fromFile("data/words.txt")
.getLines()
.toList
.flatMap(_.split(","))
.groupBy(word=>word)
.map(kv=>(kv._1,kv._2.size))
.foreach(println)
//6、关闭
bs.close()
}
}