import scala.io.Source // 导入Scala标准库中的Source类,用于从文件中读取数据

object shiyan2_3 { // 定义一个名为shiyan2_3的对象

  def main(args: Array[String]): Unit = { // 定义一个名为main的方法,接收一个字符串数组类型的参数args,并返回一个Unit类型的值

    val filename = 'file.txt' // 定义一个字符串类型的变量filename,并赋值为'file.txt'

    val source = Source.fromFile('D:\test.txt') // 从文件中读取数据,返回一个Source类型的对象,文件路径为D:\test.txt

    val list = source.getLines().toList // 获取source对象中的所有行,并将其转换为List类型

    source.close() // 关闭source对象

    var wordList: List[String] = list.flatMap(_.split(' ')) // 将list中的每一行按空格分割成单词,并将所有单词合并到一个List中

    var wordtuples:List[(String,Int)] = wordList.map((_,1)) // 将wordList中的每个单词转换为一个元组,第一个元素为单词本身,第二个元素为1

    val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1) // 将wordtuples按照第一个元素(即单词本身)进行分组,
    // 返回一个Map类型的对象,其中键为单词本身,值为包含该单词所有元组的List

    var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size) // 将wordgroup中的每个键值对(即每个单词及其对应的元组List)
    // 转换为一个新的键值对,其中键为单词本身,值为该单词在元组List中出现的次数

    println(wordcount) // 输出wordcount对象中的内容

  }

}
Scala程序:从文本文件中统计单词出现次数

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

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