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

Scala课堂小结

全文单词统计:

 可分为以下几个步骤:

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

5ede209502944d618bebcd6aafe3cda7.png

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

cb748d1e5ebf4f0c885f3cffade2b580.png

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

745f567c66f141f0a837f9eb02ca4882.png

4.排序

c24d2ab1da13417890eaf2e3e55b1ea4.png 

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

5c8e87c5dd06411fb28459ef4bc58b20.png

完整代码如下

 

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()

  }

}

b6f69bde12e942f68cba9997366222d1.png

 


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

相关文章:

  • ZCC5090EA适用于TYPE-C接口,集成30V OVP功能, 最大1.5A充电电流,带NTC及使能功能,双节锂电升压充电芯片替代CS5090EA
  • 网络安全词云图与技术浅谈
  • 微软edge浏览器 v131.0.2903.99便携版
  • 记一次前端Vue项目国际化解决方案
  • MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
  • 大型语言模型(LLMs)演化树 Large Language Models
  • 【express-generator】02-路由基本使用+api工具测试路由
  • uniapp——APP读取bin文件,解析文件的数据内容(二)
  • 【Rust自学】6.3. 控制流运算符-match
  • 【免费分享】mysql笔记,涵盖查询、缓存、存储过程、索引,优化。
  • 代码随想录day25 | leetcode 491.递增子序列 46.全排列 回溯总结
  • Grok 2.0:马斯克的大模型挑战ChatGPT,AI竞争再升级
  • 【玩转MacBook】Maven安装
  • 大数据之 HDFS:特性与架构
  • Lua语言入门 - Lua 面向对象
  • Excel粘贴复制不完整的原因以及解决方法
  • 在git commit之前让其自动执行一次git pull命令
  • [python SQLAlchemy数据库操作入门]-05.插入数据:记录单笔股票交易信息
  • 【学习总结|DAY023】Java高级技术
  • SpringBoot统计接口请求耗时
  • Docker 部署 plumelog 最新版本 实现日志采集
  • 【前端必读】如何免费无限使用Cursor:AI编程工具的终极指南!
  • Merry Christmas HTML
  • Redis——缓存击穿
  • NetLimiter使用教程,并掌握其基本的网络管理和流量控制能力
  • 聊一聊 C#线程池 的线程动态注入 (下)