Scala 程序实现文本文件单词统计
该程序使用 Scala 语言实现文本文件单词统计功能。
import scala.io.Source
object shiyan2_3 {
def main(args: Array[String]): Unit = {
val filename = 'file.txt'
val source = Source.fromFile('D:\test.txt')
val list = source.getLines().toList
source.close()
var wordList: List[String] = list.flatMap(_.split(' '))
var wordtuples:List[(String,Int)] = wordList.map((_,1))
val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1)
var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size)
println(wordcount)
}
}
程序首先使用 Source 对象从名为 'test.txt' 的文件中读取所有行,然后将每行按照空格分割成单词列表,并将每个单词转换成一个元组,其中第一个元素为单词本身,第二个元素为 1,表示该单词出现了一次。接着,将所有单词的元组列表按照单词分组,得到每个单词对应的元组列表,然后将每个单词的元组列表转换成该单词出现的次数,最后输出每个单词出现的次数。
程序代码解释:
import scala.io.Source:导入Source对象,用于读取文件。val filename = 'file.txt':定义一个名为filename的变量,用于存储文件名。val source = Source.fromFile('D:\test.txt'):使用Source.fromFile方法从文件 'D:\test.txt' 中读取所有行。val list = source.getLines().toList:将读取到的所有行转换成一个列表,并存储到list变量中。source.close():关闭文件读取流。var wordList: List[String] = list.flatMap(_.split(' ')):将list中的每一行按照空格分割成单词列表,并将所有单词列表合并成一个新的列表,存储到wordList变量中。var wordtuples:List[(String,Int)] = wordList.map((_,1)):将wordList中的每个单词转换成一个元组,其中第一个元素为单词本身,第二个元素为 1,表示该单词出现了一次,并将所有元组存储到wordtuples变量中。val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1):将wordtuples中的所有元组按照第一个元素(单词)分组,得到一个以单词为键,以该单词对应的所有元组为值的映射,并将该映射存储到wordgroup变量中。var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size):遍历wordgroup中的每个键值对,将每个键对应的值(元组列表)转换成该键(单词)出现的次数,并将所有单词出现的次数存储到wordcount变量中。println(wordcount):输出wordcount变量,即每个单词出现的次数。
原文地址: https://www.cveoy.top/t/topic/kxaS 著作权归作者所有。请勿转载和采集!