栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Scala 的wordCount

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scala 的wordCount

文章目录

Scala 的wordCount

使用java的方式统计单词的数量使用scala的方式统计单词的数量链式调用(spark)

Scala 的wordCount 使用java的方式统计单词的数量
val hashMap = new util.HashMap[String, Integer]()

    val bufferedReader = new BufferedReader(new FileReader("data/words.txt"))

    var line: String = bufferedReader.readLine()

    while (line != null) {
      val split: Array[String] = line.split(",")
      for (word <- split) {
        // 判断map集合中是否存在这个单词
        if (hashMap.containsKey(word)) {
          // 取出之前统计的结果
          val count: Integer = hashMap.get(word)
          // 在之前的基础上加一
          hashMap.put(word, count + 1)
        } else {
          // 如果单词在hashMap中不存在一个一个进去
          hashMap.put(word, 1)
        }
      }
      line = bufferedReader.readLine()
    }

    println(hashMap)

使用scala的方式统计单词的数量
    // 1、读取文件
    val lines: List[String] = Source.fromFile("data/words.txt").getLines().toList

    // 2、将一行中的多个单词拆分出来,每个单词一行
    val words: List[String] = lines.flatMap(line => line.split(","))

    

    // 3、按照单词分组,将同一个单词分到同一个组内
    val groupBuy: Map[String, List[String]] = words.groupBy((word: String) => word)

    // 4、统计分组的单词数量

  val wordCount: Map[String, Int] =  groupBuy.map(kv => {
      // key
      val word: String = kv._1

      // 组内所有单词
      val values: List[String] = kv._2

      // 计算单词的数量
      val count: Int = values.length

      // 返回结果
      (word, count)
    })

    wordCount.foreach(println)
链式调用(spark)
    Source.fromFile("data/words.txt")
      .getLines()
      .toList
      .flatMap(_.split(",")) // 将一行转换成多行
      .groupBy(w => w) // 按照单词分组
      .map(kv => (kv._1,kv._2.length)) // 统计单词的数量
      .foreach(println)

import java.io.{BufferedReader, FileReader}
import java.util
import scala.io.Source

object wordCount {
  def main(args: Array[String]): Unit = {

    

    val hashMap = new util.HashMap[String, Integer]()

    val bufferedReader = new BufferedReader(new FileReader("data/words.txt"))

    var line: String = bufferedReader.readLine()

    while (line != null) {
      val split: Array[String] = line.split(",")
      for (word <- split) {
        // 判断map集合中是否存在这个单词
        if (hashMap.containsKey(word)) {
          // 取出之前统计的结果
          val count: Integer = hashMap.get(word)
          // 在之前的基础上加一
          hashMap.put(word, count + 1)
        } else {
          // 如果单词在hashMap中不存在一个一个进去
          hashMap.put(word, 1)
        }
      }
      line = bufferedReader.readLine()
    }

    println(hashMap)

    println("=" * 100)

    

    // 1、读取文件
    val lines: List[String] = Source.fromFile("data/words.txt").getLines().toList

    // 2、将一行中的多个单词拆分出来,每个单词一行
    val words: List[String] = lines.flatMap(line => line.split(","))

    

    // 3、按照单词分组,将同一个单词分到同一个组内
    val groupBuy: Map[String, List[String]] = words.groupBy((word: String) => word)

    // 4、统计分组的单词数量

  val wordCount: Map[String, Int] =  groupBuy.map(kv => {
      // key
      val word: String = kv._1

      // 组内所有单词
      val values: List[String] = kv._2

      // 计算单词的数量
      val count: Int = values.length

      // 返回结果
      (word, count)
    })

    wordCount.foreach(println)

    println("=" * 100)

    

    Source.fromFile("data/words.txt")
      .getLines()
      .toList
      .flatMap(_.split(",")) // 将一行转换成多行
      .groupBy(w => w) // 按照单词分组
      .map(kv => (kv._1,kv._2.length)) // 统计单词的数量
      .foreach(println)

  }
}

运行结果:


我是一个底线——

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号