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

Scala学习记录,全文单词统计

全文单词统计:

可分为以下几个步骤:

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

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

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

4.排序

5.把结果写入到一个文件中

完整代码如下:

import java.io.PrintWriter
import scala.io.Source
object 全文单词统计 {
  def main(args: Array[String]){
    //1.读入文件内容
    val content = Source.fromFile("1.text").mkString
    println(content)
    //2.把字符串拆分为一个一个的单词,保存到数组
    //正则表达式
    // \\:表示正则表达式
    // W:表示一个非字(不是一个字 eg:空格,逗号,句号……)
    // W+:多个非字
    val arr = content.split("\\W+")
    for(word <- arr){
      println(word)
    }
    //3.统计每个单词出现的次数
    val wordMap = scala.collection.mutable.Map[String,Int]()
    for(word <- arr){
      if(wordMap.contains(word)){
        wordMap(word) += 1
      }else{
        wordMap(word) = 1
      }
    }
    //4.排序。Map是无序,要对其进行排序,要先把数组转成序列。List,Array
    println(wordMap.toList)
    val orderWordList = wordMap.toList.sortWith((a,b)=> a._2 > b._2).filter(e=>e._1.length>2).slice(0,30)
    for (e <- orderWordList){
      println(e)
    }
    //5.把结果写到一个文件中
    for(e <- orderWordList){
      println(e)
    }
    val writer = new PrintWriter("2.txt")
    for (e <- orderWordList) {
      writer.write(s"${e._1}: ${e._2}\n")
    }
    writer.close()
  }
}


运行结果:


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

相关文章:

  • Swift 数组
  • Jenkins更换主题颜色+登录页面LOGO图片
  • 机器学习day6-线性代数2-梯度下降
  • 原生微信小程序在顶部胶囊左侧水平设置自定义导航兼容各种手机模型
  • 视频修复技术和实时在线处理
  • React的API✅
  • 深度学习:神经网络中的损失函数的使用
  • 第5-1节:SpringBoot对SpringMVC的自动配置
  • Flutter:photo_view图片预览功能
  • C# Winform 2048小游戏源码
  • 鸿蒙 ArkTS 中文本居中对齐的坑:为何设置宽度至关重要?
  • Kibana 本地安装使用
  • LeetCode:1008. 前序遍历构造二叉搜索树
  • Consumer Group
  • Linux 编译Ubuntu24内核
  • uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题
  • 购物街项目TabBar的封装
  • 设计模式:4、命令模式(双重委托)
  • .NET 9 中 LINQ 新增功能实操
  • 详细教程-Linux上安装单机版的Hadoop
  • 支付宝租赁小程序的优势与应用前景分析
  • 创客匠人老蒋:个人IP如何获取有效流量?
  • 重读《人月神话》(14)-整体部分(The Whole and the Parts)
  • LVI-SAM视觉特征点深度恢复原理解析
  • 23种设计模式速记法
  • 《Beginning C++20 From Novice to Professional》第十三章 Operator Overloading