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(' ')) // 1. 读取文件并分割单词
println(wordList)
println()
var wordTuples:List[(String,Int)]=wordList.map((_,1)) // 2. 将单词转换为元组
println(wordTuples)
println()
var _1=wordTuples.groupBy(x=>x._1) // 3. 按单词分组
println(_1)
var _2:Map[String, Int]=_1.mapValues(x=>x.length) // 4. 统计每个单词的出现次数
println(_2)
/* println(_1.mapValues(1))
print(list.length)
list.
*/
}
}
代码解析:
-
导入 Scala 的 io 和 Source 库
import scala.io.Source:导入 Scala 的 io 库和 Source 类,用于读取文件内容。
-
定义一个名为 shiyan2_3 的 object
object shiyan2_3 { ... }:定义一个名为 shiyan2_3 的 object,用来存放代码。
-
在 object 中定义一个 main 函数
def main(args: Array[String]): Unit = { ... }:定义一个 main 函数,作为程序的入口点。
-
读取文件并分割单词
val source=Source.fromFile('D:\test.txt'):使用 Source 库读取文件 'D:\test.txt' 中的内容。val list = source.getLines().toList:将读取的文件内容转换为 List 类型,方便后续操作。source.close():关闭文件流,释放资源。val wordList:List[String]=list.flatMap(_.split(' ')):使用 flatMap 函数将 list 中的每个元素按照空格切分为单词,并保存到 wordList 变量中。
-
将单词转换为元组
var wordTuples:List[(String,Int)]=wordList.map((_,1)):使用 map 函数将 wordList 中的每个单词转换为一个元组,元组的第一个元素为单词本身,第二个元素为 1,保存到 wordTuples 变量中。
-
按单词分组
var _1=wordTuples.groupBy(x=>x._1):使用 groupBy 函数将 wordTuples 中的元素按照第一个元素(即单词本身)分组,保存到 _1 变量中。
-
统计每个单词的出现次数
var _2:Map[String, Int]=_1.mapValues(x=>x.length):使用 mapValues 函数将 _1 中的每个分组中的元素个数统计出来,保存到 _2 变量中。
总结
这段代码演示了如何使用 Scala 读取文本文件、分割单词并统计每个单词出现的次数。它展示了 Scala 中一些常用的操作,例如 flatMap、map、groupBy、mapValues 等,这些操作对于数据处理非常有用。
原文地址: https://www.cveoy.top/t/topic/kwP0 著作权归作者所有。请勿转载和采集!