Scala---wordCount案例的实现

wordCount

package com.doit.day03

import scala.io.{BufferedSource, Source}

object WordCountDemo {
  def main(args: Array[String]): Unit = {
    //读取文件,获取到一个Source对象
    val source: BufferedSource = Source.fromFile("D:\\develop\\ideaWorkSpace\\myself\\study\\scalaDemo\\data\\word.txt")
    //调用getLines方法,获取到每一行数据,每一行数据都放在迭代器中
    val lines: Iterator[String] = source.getLines()
    //如果我现在直接这么返回,他的返回值是什么??   Iterator[String]  ==》 同样的返回一个迭代器,迭代器里面放得是Array[String] 数组里面每一个元素放得都是一个个的单词
    val arrWord: Iterator[Array[String]] = lines.map(line => {
      //1.需要将每一行数据拿出来进行切割,变成一个个的单词
      //hello   hadoop  hive
      val wordsArr: Array[String] = line.split("\\s+")
      wordsArr
    })
    //将迭代器转换成了集合
    val list: List[Array[String]] = arrWord.toList
    //将list中的array压平,这样list装的就是每一个单词了
    val word: List[String] = list.flatten
    //对每一个单词进行分组,相同的单词分在一组,key就是单词,value是一个list,所有相同的单词都放在这个list中
    val wordAndList: Map[String, List[String]] = word.groupBy(word => word)
    //转换,将list转换成长度,长度就是单词的个数
    val wordCount: Map[String, Int] = wordAndList.map(tup => (tup._1, tup._2.size))
    //查看结果
    println(wordCount)
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值