Scala 统计文本文件单词频率示例
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.
*/
}
}
代码解读
import scala.io.Source:导入 Scala 标准库中的 Source 类,用于读取文件内容。object shiyan2_3:定义一个名为 shiyan2_3 的对象。def main(args: Array[String]): Unit = { ... }:定义一个名为 main 的方法,接收一个字符串数组类型的参数 args,并返回一个 Unit 类型的值。val source = Source.fromFile('D:\test.txt'):从文件 'D:\test.txt' 中读取内容,并将其赋值给 source 变量。val list = source.getLines().toList:将 source 中的内容按行读取,并将其转换为列表类型,并将其赋值给 list 变量。source.close():关闭 source。val wordList: List[String] = list.flatMap(_.split(' ')):将 list 中的每一行按空格分割,并将分割后的结果合并为一个列表,并将其赋值给 wordList 变量。println(wordList):打印 wordList 变量的值。var wordTuples: List[(String, Int)] = wordList.map((_, 1)):将 wordList 中的每一个元素都映射为一个元组,其中第一个元素为该单词,第二个元素为 1,并将映射后的结果合并为一个列表,并将其赋值给 wordTuples 变量。println(wordTuples):打印 wordTuples 变量的值。var _1 = wordTuples.groupBy(x => x._1):将 wordTuples 中的元素按照第一个元素(即单词)进行分组,并将分组后的结果赋值给 _1 变量。println(_1):打印 _1 变量的值。var _2: Map[String, Int] = _1.mapValues(x => x.length):将 _1 中的每一个分组中的元素个数计算出来,并将其转换为一个 Map 类型,并将其赋值给 _2 变量。println(_2):打印 _2 变量的值。
知识点
- Source 类:用于读取文件内容。
- getLines 方法:按行读取文件内容。
- toList 方法:将迭代器转换为列表。
- flatMap 方法:将一个列表中的每个元素都映射为一个新的列表,并将所有结果合并为一个新的列表。
- split 方法:将字符串按指定分隔符分割成多个字符串。
- map 方法:将一个列表中的每个元素都映射为一个新的元素。
- groupBy 方法:将一个列表中的元素按照某个函数进行分组。
- mapValues 方法:将一个 Map 中的每个键值对都映射为一个新的值。
总结
本示例代码展示了如何使用 Scala 语言读取文本文件,并统计每个单词出现的频率,并输出结果。代码中用到了 Source 类、getLines 方法、toList 方法、flatMap 方法、split 方法、map 方法、groupBy 方法、mapValues 方法等常用操作。希望本示例能够帮助您理解这些操作的使用方法。
原文地址: https://www.cveoy.top/t/topic/kwQC 著作权归作者所有。请勿转载和采集!