Scala程序:从文本文件中统计单词出现次数
import scala.io.Source // 导入Scala标准库中的Source类,用于从文件中读取数据
object shiyan2_3 { // 定义一个名为shiyan2_3的对象
def main(args: Array[String]): Unit = { // 定义一个名为main的方法,接收一个字符串数组类型的参数args,并返回一个Unit类型的值
val filename = 'file.txt' // 定义一个字符串类型的变量filename,并赋值为'file.txt'
val source = Source.fromFile('D:\test.txt') // 从文件中读取数据,返回一个Source类型的对象,文件路径为D:\test.txt
val list = source.getLines().toList // 获取source对象中的所有行,并将其转换为List类型
source.close() // 关闭source对象
var wordList: List[String] = list.flatMap(_.split(' ')) // 将list中的每一行按空格分割成单词,并将所有单词合并到一个List中
var wordtuples:List[(String,Int)] = wordList.map((_,1)) // 将wordList中的每个单词转换为一个元组,第一个元素为单词本身,第二个元素为1
val wordgroup:Map[String,List[(String,Int)]] = wordtuples.groupBy(kv=>kv._1) // 将wordtuples按照第一个元素(即单词本身)进行分组,
// 返回一个Map类型的对象,其中键为单词本身,值为包含该单词所有元组的List
var wordcount:Map[String,Int] = wordgroup.mapValues(list=>list.size) // 将wordgroup中的每个键值对(即每个单词及其对应的元组List)
// 转换为一个新的键值对,其中键为单词本身,值为该单词在元组List中出现的次数
println(wordcount) // 输出wordcount对象中的内容
}
}
原文地址: https://www.cveoy.top/t/topic/kxZi 著作权归作者所有。请勿转载和采集!