文件读写-全文单词统计(2)

65 阅读1分钟

(一)写拆分单词统计个数

思路:

1. 分隔出一个一个的单词。

2. 建立一个Map,key是单词,value是次数。

3. 遍历所有的单词,对每个单词来说:

判断单词是否存在,如果存在把对应的key+1;

否则就设置对应的key,且value为1

object test7 {
  def main(arg: Array[String]): Unit = {
    val content = scala.io.Source.fromFile("D:\24大数据1班\1\src\test.txt").mkString;

    printf(content);

    val list = content.split(" ")

    val map1 = scala.collection.mutable.Map("I" -> 1,"am" -> 2)
    //对于list中的每个单词
    list.foreach(word =>{
      if(map1.contains(word)){
        map1(word) += 1
      }else{
        map1(word) = 1
      }
    })
    //检查它在map中是否存在?
    //存在,它的值加一
    //不存在,把它的值设为 1

    map1.foreach(el=> println(el))
  }
}

(二)对Map结果排序

Map本身是键值对,它是无序的。可以先转成List或者Seq,然后再排序。

//4.对结果进行排序(排序排列)
//Map本身是无序的,它没有排序功能
//如果要对它的内容进行排序,那么,我们要把它转换成可以排序的集合:List
//sortBy排序:根据元组第二个值
//reverse:翻转
val wordList = map1.toList.sortBy(_._2).reverse

wordList.foreach(el => println(el))

map1.foreach(el=> println(el))

(三)结果写入

write:不会自动换行,可以加入\n; println:写入一行

//5.把输出的结果保存到一个新的文件中
val writer = new PrintWriter("output.txt")
writer.write("Hello, Scala PrintWriter!")
writer.close()