Scala里的WordCount 案例

7.7.5 普通 WordCount 案例

在这里插入图片描述

package chapter07object TestWordCount__简单版 {def main(args: Array[String]): Unit = {//单词计数:将集合中出现的相同单词计数,进行计数,取计数排名的前三的结果val stringList = List("Hello Scala Hbase kafka", "Hello Scala Hbase", " Hello Scala", "Hello")//1.将每个字符串转换成一个一个单词val wordList:List[String] = stringList.flatMap(str => str.split(" "));println(wordList)println("------------------------------------------------------------------------------------------")//2.将相同的单词放置在一起,则需要用Map进行(k,v)操作val wordSame:Map[String,List[String]] = wordList.groupBy(word => word)println(wordSame)println("------------------------------------------------------------------------------------------")//3.对相同的单词进行计数//(word,list) => (word,count)val wordToCount:Map[String,Int] = wordSame.map(tuple=>(tuple._1,tuple._2.size))println(wordToCount)println("------------------------------------------------------------------------------------------")//4.对计数完成后的结果进行排序(采用降序)val sortList:List[(String,Int)] = wordToCount.toList.sortWith{(A,B) =>{A._2>B._2}}println(sortList)println("------------------------------------------------------------------------------------------")//5.对排序后的结果取前3名、val resThreeList:List[(String,Int)] = sortList.take(3)println(resThreeList)}}

7.7.6 复杂 WordCount 案例

TestWordCount__复杂版__方式01

package chapter07object TestWordCount__复杂版__方式01 {def main(args: Array[String]): Unit = {val tupleList = List(("Hello Scala Spark World ", 4), ("Hello Scala Spark", 3), (" Hello Scala", 2), ("Hello", 1))val stringList:List[String]  = tupleList.map(t => (t._1 + " ") * t._2)val words:List[String] = stringList.flatMap(s=>s.split(" "))//在map中,如果传进来什么就返回什么,不要用 _ 省略val groupMap:Map[String,List[String]] = words.groupBy(word => word)//val groupMap:Map[String,List[String]] = words.groupBy(_)// //(word,list) => (word,count)val wordToCount:Map[String,Int] = groupMap.map(t=>(t._1,t._2.size))val wordCountList:List[(String,Int)] = wordToCount.toList.sortWith{(left,right) =>{left._2 > right._2}}.take(3)tupleList.map(t=>(t._1+" ")*t._2).flatMap(_.split(" ").groupBy(word=>word).map(t=>(t._1,t._2.size)))println(wordCountList)}
}

TestWordCount__复杂版__方式02

package chapter07object TestWordCount__复杂版__方式02 {def main(args: Array[String]): Unit = {val tuples = List(("Hello Scala Hbase kafka",4),( "Hello Scala Hbase",3),(" Hello Scala",2),( "Hello",1))val wordToCountList:List[(String,Int)] = tuples.flatMap{t =>{val strings:Array[String] = t._1.split(" ")strings.map(word=>(word,t._2))}}// Hello, List((Hello,4), (Hello,3), (Hello,2), (Hello,1))// Scala, List((Scala,4), (Scala,3), (Scala,2)// Spark, List((Spark,4), (Spark,3)// Word, List((Word,4))val wordToTuoleMap:Map[String,List[(String,Int)]] = wordToCountList.groupBy(t=>t._1)val stringToInts:Map[String,List[Int]] = wordToTuoleMap.mapValues{datas=> datas.map(t=>t._2)}stringToInts//---------------------------------------------------------------------val wordToCountMap:Map[String,List[Int]] = wordToTuoleMap.map{t=>{(t._1,t._2.map(t1 => t1._2))}}val wordToTotalCountMap:Map[String,Int] = wordToTotalCountMap.map(t=>(t._1,t._2))println(wordToCountMap)}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9409.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ruoyi-vue | electron打包教程(超详细)

公司项目由于来不及单独做客户端了,所以想到用electron直接将前端打包程exe,dmg等格式的安装包。 由于使用的ruoyi-vue框架开发,所以这篇教程以ruoyi-vue为基础的。 环境说明 nodejs:v16.18.1npm:8.19.2ruoyi-vue:3.8…

【Java】网络编程与Socket套接字、UDP编程和TCP编程实现客户端和服务端通信

网络编程客户端和服务器Socket套接字流套接字TCP数据报套接字UDP对比TCP与UDP UDP编程DatagramSocket构造方法:普通方法: DatagramPacket构造方法:普通方法: 实现 TCP编程ServerSocket构造方法普通方法 Socket构造方法普通方法 实现 网络编程 为什么需要…

【算法集训之线性表篇】Day 02

文章目录 题目一思路分析代码实现效果 题目二思路分析代码实现效果 题目一 01.设置一个高效算法,将顺序表L的所有元素逆置,要求其空间复杂度为O(1)。 思路分析 首先,根据题目要求,空间复杂度度为O(1),则不能通过空间换时间的方…

安装qt qmake assistant 错误:could not find a Qt installation of ‘‘

1、执行qmake,提示下图的错误 Command qmake not found, but can be installed with: sudo apt install qtchooser 解决方法: sudo apt install qtchooser 2、执行qmake,提示一下错误 qmake: could not find a Qt installation of 解决步骤: 步骤一&a…

媲美postman?这款国产测试工具你知道吗

没有测试数据的用例就像一盘散沙,跑两步就跑不动了 没有测试数据,所谓的功能测试和性能测试全都是无米之炊。但我发现一个蛮诡异的事情,就是行业内很少会有人去强调测试数据的重要性,甚至市面上都没有人在做测试数据这门生意。 …

【Spring】核心与设计思想

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 谈起Java 圈子里的框架,最年长最耀眼的莫过于 Spring 框架啦,如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这…

SpringBoot整合ElasticSearch

一.【es-client】项⽬的pom.xml⽂件中&#xff0c;引⼊Spring Data Elasticsearch的启动器 <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-elasticsearch </artifactId> </dependen…

unity+pico neo3入门教程

安装unity&#xff0c;教程如下&#xff1a;unity2021安装教程 安装pico的SDK:: https://developer-cn.pico-interactive.com/ 有入门教程&#xff1a;导入 SDK - PICO 开发者平台 注册后组织&#xff0c;创建应用learntest&#xff0c;如下 下载SDK。下载最新版&#xff…

Android CrashHandler全局异常

CrashHandler 介绍 Android 应用不可避免的会发生crash 即崩溃&#xff0c;无论程序写的多好&#xff0c;都会不可避免的发生崩溃&#xff0c;可能是由底层引起的&#xff0c;也有可能是写的代码引起的。当crash发生时&#xff0c;系统会kill掉正在执行的程序&#xff0c;现象…

Redhat7.6安装mysql5.7

环境准备&#xff1a;硬盘剩余空间最少8G,内存剩余最少2G Mysql官网下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html 在Mysql官网下载列表中选择需要安装的版本: RedHat7.6安装MySQL5.7 安装之前&#xff0c;先要保证系统环境是干净的&#xff0c;不能存…

Docker网络管理应用

实验要求 了解Docker常用网络模式&#xff0c;掌握Docker常用网络模式的使用。主要任务是利用busybox镜像建立容器&#xff0c;容器名称为test_busybox1和test_busybox2&#xff0c;将网络模式设置为none&#xff0c;并为容器配置IP地址&#xff0c;容器test_busybox1的IP设置…