split
1.读入paper.txt的内容 长的字符串
2.对字符串进行拆分 把句子变成一个一个单词
3.空的容器保存键值对数据:键:单词,值:次数
4.打印统计结果
package words
import java.io.FileWriter
object words01 {
def main(args01: Array[String]): Unit = {
//1.读入paper.txt的内容 大大的长长的字符串
// Source.fromFile().mkString
//2.对字符串进行拆分 把句子变成一个一个单词
// split
//1
val content = scala.io.Source.fromFile("./test.txt").mkString
println(content)
//val content = "I like scala."
//2.对字符串进行拆分:使用空格,对这个长长的字符串做拆分,得到了一个数组,每个元素都是一个单词
// map 把每个单词都变小写
val rst = content.split("\W+").map(ele=>ele.toLowerCase)
//["I", "like","scala."]
//投票,画正字
//3.空的容器保存键值对数据:键:单词,值:次数
val map = scala.collection.mutable.Map[String, Int]()
rst.foreach(word => {
//如果word在map中存在,就把值+1
if(map.contains(word)){
map(word) += 1
}
else{//如果word在map中不存,就把值设为1
//map += wore -> 1
map += word -> 1
}
})
//4.排序
//map.foreach(println)
//按照单词出现的频率,从高到低排序
//map是无序的,不能做排序
//list是可以排序的
val wordLists = map.toList.sortBy(_._2).reverse
//5.把结果写入到文件中
val writer = new FileWriter("result.txt")
wordLists.foreach(ele => {
writer.write(s"${ele._1}:${ele._2} \n")
})
writer.close()
rst.foreach(println)
}
}