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,表示出现次数为1
println(wordTuples)
println()
var _1=wordTuples.groupBy(x=>x._1) // 按单词进行分组
println(_1)
var _2:Map[String, Int]=_1.mapValues(x=>x.length) // 将Map中的元组列表转换为单词出现次数
println(_2)
/* println(_1.mapValues(1))
print(list.length)
list.
*/
}
}
用到的知识点:
-
文件读取: 使用 Scala 的
Source对象可以读取文件内容,可以使用getLines方法按行读取,也可以使用mkString方法将整个文件内容读取到一个字符串中。 -
集合操作: Scala 中的集合操作非常强大,可以使用
flatMap、map、groupBy、mapValues等方法对集合进行转换、分组、统计等操作。 -
元组: Scala 中的元组可以用来存储多个值,可以使用
(x,y)的形式创建元组,也可以使用模式匹配的方式获取元组中的值。 -
Map: Scala 中的
Map是一种键值对集合,可以使用mapValues方法对 Map 中的值进行转换。
程序执行步骤:
- 使用
Source对象读取文件内容。 - 使用
getLines方法按行读取内容,并将结果转换为List类型。 - 使用
flatMap方法将每行内容按空格切分成单词,并将结果存储到一个List中。 - 使用
map方法将每个单词转换为一个元组,元组的第二个值初始化为 1,表示出现次数为 1。 - 使用
groupBy方法将元组按单词进行分组,得到一个Map类型的结果。 - 使用
mapValues方法将Map中的元组列表转换为单词出现次数,得到一个Map[String,Int]类型的结果。
原文地址: https://www.cveoy.top/t/topic/kwU8 著作权归作者所有。请勿转载和采集!