本程序使用 Scala 语言,演示了如何读取文本文件并统计其中每个单词出现的次数。

import scala.io.Source
object shiyan2_3 {
  def main(args: Array[String]): Unit = {
    val source=Source.fromFile('D:\test.txt')
    val list = source.getLines().toList
    source.close()
    val wordList:List[String]=list.flatMap(_.split(' ')) // 将每行内容按空格切分成单词
    println(wordList)
    println()
    var wordTuples:List[(String,Int)]=wordList.map((_,1)) // 将每个单词转换为一个元组,元组的第二个值初始化为1,表示出现次数为1
    println(wordTuples)
    println()
    var _1=wordTuples.groupBy(x=>x._1) // 按单词进行分组
    println(_1)

    var _2:Map[String, Int]=_1.mapValues(x=>x.length) // 将Map中的元组列表转换为单词出现次数
    println(_2)
    /*    println(_1.mapValues(1))

        print(list.length)
       list.
     */
  }

}

用到的知识点:

  1. 文件读取: 使用 Scala 的 Source 对象可以读取文件内容,可以使用 getLines 方法按行读取,也可以使用 mkString 方法将整个文件内容读取到一个字符串中。

  2. 集合操作: Scala 中的集合操作非常强大,可以使用 flatMapmapgroupBymapValues 等方法对集合进行转换、分组、统计等操作。

  3. 元组: Scala 中的元组可以用来存储多个值,可以使用 (x,y) 的形式创建元组,也可以使用模式匹配的方式获取元组中的值。

  4. Map: Scala 中的 Map 是一种键值对集合,可以使用 mapValues 方法对 Map 中的值进行转换。

程序执行步骤:

  1. 使用 Source 对象读取文件内容。
  2. 使用 getLines 方法按行读取内容,并将结果转换为 List 类型。
  3. 使用 flatMap 方法将每行内容按空格切分成单词,并将结果存储到一个 List 中。
  4. 使用 map 方法将每个单词转换为一个元组,元组的第二个值初始化为 1,表示出现次数为 1。
  5. 使用 groupBy 方法将元组按单词进行分组,得到一个 Map 类型的结果。
  6. 使用 mapValues 方法将 Map 中的元组列表转换为单词出现次数,得到一个 Map[String,Int] 类型的结果。
Scala 文件读取与集合操作示例:统计文本中单词出现次数

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

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