该程序使用 Scala 语言实现文本文件单词统计功能。

import scala.io.Source
object shiyan2_3 {
  def main(args: Array[String]): Unit = {
    val filename = 'file.txt'
    val source = Source.fromFile('D:\test.txt')
    val list = source.getLines().toList
    source.close()
    var wordList: List[String] = list.flatMap(_.split(' '))
    var wordtuples:List[(String,Int)] = wordList.map((_,1))
    val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1)
    var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size)
    println(wordcount)
  }
}

程序首先使用 Source 对象从名为 'test.txt' 的文件中读取所有行,然后将每行按照空格分割成单词列表,并将每个单词转换成一个元组,其中第一个元素为单词本身,第二个元素为 1,表示该单词出现了一次。接着,将所有单词的元组列表按照单词分组,得到每个单词对应的元组列表,然后将每个单词的元组列表转换成该单词出现的次数,最后输出每个单词出现的次数。

程序代码解释:

  • import scala.io.Source:导入 Source 对象,用于读取文件。
  • val filename = 'file.txt':定义一个名为 filename 的变量,用于存储文件名。
  • val source = Source.fromFile('D:\test.txt'):使用 Source.fromFile 方法从文件 'D:\test.txt' 中读取所有行。
  • val list = source.getLines().toList:将读取到的所有行转换成一个列表,并存储到 list 变量中。
  • source.close():关闭文件读取流。
  • var wordList: List[String] = list.flatMap(_.split(' ')):将 list 中的每一行按照空格分割成单词列表,并将所有单词列表合并成一个新的列表,存储到 wordList 变量中。
  • var wordtuples:List[(String,Int)] = wordList.map((_,1)):将 wordList 中的每个单词转换成一个元组,其中第一个元素为单词本身,第二个元素为 1,表示该单词出现了一次,并将所有元组存储到 wordtuples 变量中。
  • val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1):将 wordtuples 中的所有元组按照第一个元素(单词)分组,得到一个以单词为键,以该单词对应的所有元组为值的映射,并将该映射存储到 wordgroup 变量中。
  • var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size):遍历 wordgroup 中的每个键值对,将每个键对应的值(元组列表)转换成该键(单词)出现的次数,并将所有单词出现的次数存储到 wordcount 变量中。
  • println(wordcount):输出 wordcount 变量,即每个单词出现的次数。
Scala 程序实现文本文件单词统计

原文地址: https://www.cveoy.top/t/topic/kxaS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录