Scala 统计文本文件单词频率示例

本示例代码演示了如何使用 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配对
    println(wordTuples)
    println()
    var _1 = wordTuples.groupBy(x => x._1) // 按单词分组
    println(_1)

    var _2: Map[String, Int] = _1.mapValues(x => x.length) // 统计每个单词出现的次数
    println(_2)
    /*    println(_1.mapValues(1))

        print(list.length)
       list.
     */
  }

}

代码解读

  1. import scala.io.Source:导入 Scala 标准库中的 Source 类,用于读取文件内容。
  2. object shiyan2_3:定义一个名为 shiyan2_3 的对象。
  3. def main(args: Array[String]): Unit = { ... }:定义一个名为 main 的方法,接收一个字符串数组类型的参数 args,并返回一个 Unit 类型的值。
  4. val source = Source.fromFile('D:\test.txt'):从文件 'D:\test.txt' 中读取内容,并将其赋值给 source 变量。
  5. val list = source.getLines().toList:将 source 中的内容按行读取,并将其转换为列表类型,并将其赋值给 list 变量。
  6. source.close():关闭 source。
  7. val wordList: List[String] = list.flatMap(_.split(' ')):将 list 中的每一行按空格分割,并将分割后的结果合并为一个列表,并将其赋值给 wordList 变量。
  8. println(wordList):打印 wordList 变量的值。
  9. var wordTuples: List[(String, Int)] = wordList.map((_, 1)):将 wordList 中的每一个元素都映射为一个元组,其中第一个元素为该单词,第二个元素为 1,并将映射后的结果合并为一个列表,并将其赋值给 wordTuples 变量。
  10. println(wordTuples):打印 wordTuples 变量的值。
  11. var _1 = wordTuples.groupBy(x => x._1):将 wordTuples 中的元素按照第一个元素(即单词)进行分组,并将分组后的结果赋值给 _1 变量。
  12. println(_1):打印 _1 变量的值。
  13. var _2: Map[String, Int] = _1.mapValues(x => x.length):将 _1 中的每一个分组中的元素个数计算出来,并将其转换为一个 Map 类型,并将其赋值给 _2 变量。
  14. println(_2):打印 _2 变量的值。

知识点

  • Source 类:用于读取文件内容。
  • getLines 方法:按行读取文件内容。
  • toList 方法:将迭代器转换为列表。
  • flatMap 方法:将一个列表中的每个元素都映射为一个新的列表,并将所有结果合并为一个新的列表。
  • split 方法:将字符串按指定分隔符分割成多个字符串。
  • map 方法:将一个列表中的每个元素都映射为一个新的元素。
  • groupBy 方法:将一个列表中的元素按照某个函数进行分组。
  • mapValues 方法:将一个 Map 中的每个键值对都映射为一个新的值。

总结

本示例代码展示了如何使用 Scala 语言读取文本文件,并统计每个单词出现的频率,并输出结果。代码中用到了 Source 类、getLines 方法、toList 方法、flatMap 方法、split 方法、map 方法、groupBy 方法、mapValues 方法等常用操作。希望本示例能够帮助您理解这些操作的使用方法。

Scala 统计文本文件单词频率示例

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

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