当前位置: 首页 > article >正文

scala之全文单词统计

1.读取文件,得到很长的字符串

2.把字符串拆分成一个一个的单词

3.统计每个单词出现的次数

4.排序

5.把结果保存到一个新文件中

完整代码

import java.io.PrintWriter
import scala.io.Source
import scala.reflect.api.Printers

object test2 {
  def main(args: Array[String]): Unit = {


    //1.读入文件内容
    val content = Source.fromFile("1.txt").mkString
    println(content)

    //2.把字符串中的每个单词拆出,并保存到数组
    //W:表示一个非字(不是一个字 eg:空格,逗号,句号……)
    //W+:多个非字
    val arr = content.split("\\W+")


    //统计
    val m1 = scala.collection.mutable.Map[String, Int]()
    arr.foreach(word => {
      //检查是否出现过
      if (m1.contains(word)) {
        //把票数
        m1(word) += 1
      } else {
        m1(word) = 1
      }
    })

    //对于m1,他是一个Map,(thank:10,is:5),现在需要对它进行排序,把出现最多次数的放在最前面,然后再输出
    //只要排序之前的结果的前15个?在list中取出前15个?
    val sortedM1 = m1.toList.sortWith((a, b) => a._2 > b._2).filter(a => a._1.length > 2).slice(0, 15)
    //输出排序后的Map
    sortedM1.foreach { case (word, cishu) => println(s"${word}:${cishu}") }

    //把结果保存到一个新文件中:
    val writer = new PrintWriter("2.txt")
    writer.println("统计的结果是:")
    //输出排序后的Map
    //把结果保存到一个新的文件中
    sortedM1.foreach { case (word, cishu) => writer.println(s"${word}:${cishu}") }
    writer.close()
  }

}

运行结果


http://www.kler.cn/a/419295.html

相关文章:

  • Unity世界坐标转屏幕坐标报错解决办法。
  • Tree搜索二叉树、map和set_数据结构
  • Redis进行性能优化可以考虑的一些策略
  • python -从文件夹批量提取pdf文章的第n页,并存储起来
  • 论文笔记 SliceGPT: Compress Large Language Models By Deleting Rows And Columns
  • Redis【1】- 如何阅读Redis 源码
  • SQLServer如何导入数据库
  • Lumos学习王佩丰Excel第十七讲:数学函数
  • 如何在WPF中打印PDF文件
  • CAD深度清理工具-AVappsDrawingPurge9.0.0(2024.8.27版本) 支持版本CAD2022-2025-供大家学习研究参考
  • 挑战用React封装100个组件【007】
  • LabVIEW实现串口调试助手
  • Linux驱动开发基础(有源蜂鸣器模块)
  • 跨地域 SD-WAN 网络专线解决方案
  • RabbitMq死信队列(详解)
  • 构建鸿蒙5.0应用(一)
  • 13 设计模式之外观模式(家庭影院案例)
  • JavaScript(JS)的对象
  • 「Qt Widget中文示例指南」如何为窗口实现流程布局?(二)
  • python:windows无法使用cx_Oracle模块
  • 【k8s深入理解之 Scheme 补充-4】理解资源的内外部版本(存放位置不同、版本转换函数自动生成、版本新增字段等)
  • C++11(下)
  • Pinia管理用户数据
  • 【Unity-摩擦力】
  • 【K8s】【部署】集群部署
  • 4.3_CMS漏洞