使用foldLeft函数,实现简易的wordCount

import scala.collection.mutable

object Demo_019 {
def main(args: Array[String]): Unit = {
val list = List("bigdata han hello ", "bigdata han aaa aaa aaa ccc ddd uuu")
val map01 = mutable.Map[String, Int]()
list.foldLeft(map01)(count2)
println(map01)
} def count2(map2: mutable.Map[String, Int], str: String): mutable.Map[String, Int] = {
val arr: Array[String] = str.split(" ")
for (elem <- arr) {
map2 += (elem -> (map2.getOrElse(elem, 0) + 1))
}
map2
}

运行结果为:

当然这种方式,还是显得太罗嗦了,还有更为简洁的方式,而且还可以结果进行正序或逆序排序

简单一句就是:

 val result = list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(s => (s._1,s._2.size))

显然不容易懂,下面是详细说明

object Demo_019_01 {
def main(args: Array[String]): Unit = {
val list = List("bigdata han hello ", "bigdata han aaa aaa aaa ccc ddd uuu")
// val result2 = list.flatMap((x: String) => x.split(" "))
val result2 = list.flatMap(_.split(" "))
println("result2:"+result2)
// val result3 = result2.map((x: String) => (x, 1))
val result3 = result2.map((_,1))
println("result3:"+result3)
// val result4 = result3.groupBy((x: (String, Int)) => x._1)
val result4 = result3.groupBy(_._1)
println("result4:"+result4)
// val result5 = result4.map((s: (String, List[(String, Int)])) => (s._1, s._2.size))
val result5= result4.map(s => (s._1,s._2.size))
println("result5:"+result5)
// val result6 = result5.toList.sortBy((x: (String, Int)) => x._2).reverse
val result6 = result5.toList.sortBy(_._2)
println("result6:"+result6)
}
}

  输出结果为

上面使用了参数类型推断,关于参数类型推断,介绍如下

Scala中做简易wordCount的更多相关文章

  1. 第87讲:scala中使用For表达式做查询

    今天我们来学习下如何用for表达式在scala中做查询. 先来看看示例代码 case class Book(title:String,authors:List[String]) object text ...

  2. scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  3. scala入门教程:scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  4. Scala 中 构造函数,重载函数的执行顺序

    在调试scala在线开发教程(http://www.imobilebbs.com/wordpress/archives/4911)的过程中看到了以下代码,但是这段代码无论怎么调试都无法成功. abst ...

  5. Scala 深入浅出实战经典 第54讲:Scala中复合类型实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  6. Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. Scala中的构造器和高阶函数

    构造器 在定义类时可以定义主构造器.主构造器可以同时声明字段. /** * 主构造器 * @author Administrator */ //在scala中,类和方法交织在一起 class Test ...

  8. Scala中的If判断&While&For循环

    If 判断: object TestScalaIf { def main(args: Array[String]): Unit = { // val resutlt = judge1(-100) // ...

  9. scala中的call-by-name和call-by-value

    http://www.jianshu.com/p/93eefcb61d4f val和def的区别 在scala中,可以用val和def前缀来定义变量,例如: val x = 1 def y = &qu ...

随机推荐

  1. Git 撤销更改

    一.未使用 git add 缓存代码时 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记中间的 “--” ...

  2. web自动化 -- 框架

    一.框架源码 https://github.com/jiangnan27/Autotest_UI_Open   二.框架大概介绍 Python3 + selenium3 + pytest5.3 + a ...

  3. Nginx(一)Linux上的Nginx安装步骤

    一.Windows下安装 解压:nginx-windows 双击: nginx.exe 能看到nginx欢迎界面说明,nginx安装成功 演示下 nginx做静态服务器 二.Linux下安装 (1). ...

  4. jsp课堂笔记1

    http协议:规范浏览器和服务器交互或通信的规则 https:基于http实现,比http更加安全,提供了身份验证和通信内容加密  服务器:1.配置比较高的电脑  2.他就是一个应用 http1.0: ...

  5. Seaborn实现多变量分析

    import seaborn as sns import numpy as np import pandas as pd import matplotlib.pyplot as plt sns.set ...

  6. 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  7. ref以及传值传址的理解

    ref(也包括out)关键字肯定都会用,传值调用和传址调用也是初学写代码时都已经历过的话题,与这相关的还有一些话题,比如值类型和引用类型有什么区别等,但是如果不仔细,可能有一些概念的混淆或者理解不够清 ...

  8. Jenkins总结1-部署jenkins

    1. 介绍 jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如: ...

  9. 声明式事务xml Spring

    !--JDBC事务管理器--><bean id="tansactionManager" class="org.springframework.jdbc.dat ...

  10. 拓展欧几里得求 ax + by = c的通解(a >=0, b >= 0)

    #include <iostream> #include <cstdio> #include <algorithm> #include <vector> ...