Scala读取单词的次数

复制代码
import scala.io.Source


//知识点:
//1.字符串.split("分隔符"):把字符串用指定的分隔符,拆分成多个部分,保存在数组中。

object Tset {
  def main(args: Array[String]): Unit = {
    //从文件1.txt读取内容
    val content = Source.fromFile("1.txt").mkString
    //println(content)

    //把字符串中的每个单词,折出来
    //正则表达式
    // \\w+:大写字符w表示:丰字(不是一个字的字符。例如:空格,逗号,句号,换行...)
    // +:一个或者多个
    val arr = content.split("\\w+")//得到是一个字符串数组

    //统计词频
    val m1 = scala.collection.mutable.Map[String,Int]()
    arr.foreach(word =>{
      //检查是否出现过
       if(m1.contains(word)){
         //出现票数+1
         m1(word) +=1
       }else{
         //没有出现票数不变
         m1(word)=1
       }
    })
    //对于m1,它是是一个Map(thank:10,is:5),现在需要对它进行排序,把出现次数最多的放在在前面,然后再输出
    //(think,10)
    //只需要排序之前的结果的前15个?在List中取出前15个?
    val sortedM1 = m1.toList.sortWith((a,b)=>a._2 > b._2).filter(a=>a._1.length>2).slice(0,15)

    //开始写入
    val writer = new java.io.PrintWriter("3.txt")
    //输出排序后的Map
    //把结果保持到一个新的文件中去
    writer.println("统计的结果是:")
    sortedM1.foreach{case (word,cishu) => writer.println(s"${word}:${cishu}")}
    writer.close() //结束写入
  }
}
相关推荐
Thomas21435 天前
Java scala 数组 链表
java·链表·scala
江畔柳前堤6 天前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala
hopsky20 天前
《Scala 学习手册》核心内容详解
人工智能·学习·scala
abcy0712131 个月前
scala playframework 搭建与新建controller教程
scala
lpfasd1231 个月前
编程语言榜单变迁分析
开发语言·后端·scala
戮漠summer2 个月前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
醉熏的石头2 个月前
Ubuntu 中的编程语言(中)
linux·ubuntu·scala
Irene19912 个月前
Scala、Java、Python、JavaScript 的核心特性和应用场景(Python 的“单机“局限性:GIL 机制导致的多核并行缺陷)
java·javascript·python·scala
李白的天不白3 个月前
确认 Nginx 配置文件是否真的生效
scala
醉颜凉3 个月前
Scala自定义Monad实战:从理论到应用的完整指南
大数据·算法·scala