要求⽤scala实现统计⽂本⽂件: 出现了多少单词出现了15 每个单词出现的次数 再根据单词出现的次数倒序排列
时间: 2023-11-24 18:08:22 浏览: 138
以下是使用 Scala 实现统计文本文件中单词出现次数的代码,其中假设文本文件路径为 `file.txt`:
```scala
import scala.io.Source
object WordCount {
def main(args: Array[String]): Unit = {
val filename = "file.txt"
val lines = Source.fromFile(filename).getLines().toList
val words = lines.flatMap(line => line.split("\\W+"))
val wordCounts = words.groupBy(w => w).mapValues(_.length).toList
val filteredWordCounts = wordCounts.filter { case (w, c) => c >= 15 }
val sortedWordCounts = filteredWordCounts.sortBy { case (w, c) => -c }
println("Total number of words: " + words.length)
println("Number of words that appear at least 15 times: " + filteredWordCounts.length)
sortedWordCounts.foreach { case (w, c) => println(s"$w: $c") }
}
}
```
这个程序首先读取文本文件的所有行,并将每行的单词以空格、标点符号等为分隔符进行拆分。然后将所有单词按照出现次数进行分组,并统计每个单词出现的次数。接着过滤出出现次数不少于 15 次的单词,并按照出现次数倒序排列。最后输出所有单词及其出现次数。
注意,这个实现中使用了 Scala 的集合操作和函数式编程特性,比如 `flatMap`、`groupBy`、`mapValues`、`filter` 和 `sortBy` 等。这些操作和函数可以让代码更加简洁、易读和易于维护。
阅读全文