全文单词统计

65 阅读1分钟

一:任务分析

  1. 把文字内容从.txt文件中读到内存中。

  2. 写程序分析数据。

  3. 把结果写入.txt文件。

二:从文件中读出内容

在scala中,涉及到文件读写的方法有很多,可以使用java.io下的工具包,也可以使用scala.io下的功能。

下面介绍source.fromFile这个方法。

格式:scala.io.Source.formFile(文件名)

作用:读入一个文件

def main(args: Array[String]): Unit = {
  val content = "I am studying scala. I like scala.";

  //2. 把字符拆分成单词
  val list = content.split(" "); // 使用空格 去拆分字符串,结果是一个List

  // 3.统计每个单词出现的次数
  //  新建一个Map("I" -> I,  "am" -> 2)
  val map1 = scala.collection.mutable.Map("I" -> 0)
  // 对于list中的每个单词,
  list.foreach(word =>{
    // 检查它在Map中是否存在?
    // println(word,map1.contains(word))
    if(map1.contains(word)){
      map1(word) += 1 // 存在:  把它的值+1
    } else {
      map1(word) = 1 // 不存在:把它的值设为1
    }
  })
  // 4.对结果排序(降序排列)
  // Map本身是无序的,他没有排序的功能
  // 如果对他的内容进行降序,那么,我们要把他转换成可以排序的集合:List
  // sortBy排序 根据元组的第二个值
  // reverse: 翻转
  val wordList = map1.toList.sortBy(_._2).reverse
  wordList.foreach(el => println(el))

}