Scala的全文单词统计

全文单词统计:

 

可分为以下几个步骤:

 

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

19be62898dc0495b9868c1e081e8b164.png

 

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

693cf8f24b364d2692f89f3c2c07082d.png

 

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

0d9b38d5b24b496690c3865d66b73399.png

 

4.排序

f7cad6dd9c764fd581956ed9e4bb0900.png

 

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

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

 

  }

 

}

8b21b9061c5147a08ccb70121b2f35dd.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值