Scala进阶-函数练习

1) map()函数

可以对整个集合进行操作,比如
创建一个Seq列表,然后用map对集合*2

val salaries  = Seq(2,3,4,5)val newsalaries = salaries.map(_*2)

2) flatMap函数

faltMap函数是map一种扩展,faltMap中传入一个函数,该函数对每个输入都会返回一个集合,然后,会把多个集合“拍扁”成一个集合

val words = Seq("H e l l o","w o r l d")val resule = words.faltMap(_.split(" ")println(result)结果:	List(H, e, l, l, o, w, o, r, l, d, -, w, -e, w)

3) reduce函数

redce 函数可以对集合当中的元素进行归约操作,下划线是占位符,两个下划线表示归约的规则是使用前后两个元素,中间加号,用来表示对元素的操作
不指定reduce是left还是right,默认情况是reduceLeft

    //reduce函数val list = List(1,2,3,4,5)val result = list.reduce(_+_)println("result:" + result)

4)foreach函数

foreach函数与map相似,都是遍历集合对象,并对每一项执行指定的方法。区别在于foreach无返回值,map返回一个List

	val list = List(1,2,3)list.foreach(println)

5) groupby 函数

groupby 函数将列表进行分组,分组依据是应该groupby函数中的函数的返回值,可以看到结果是返回一个map集合

    val list = List("a","b","c","d")val result = list.groupBy(x=>{x match {case "a" => 1case "b" => 1case _ => 2}})println(result)结果:HashMap(1 -> List(a, b), 2 -> List(c, d))
val seq = Seq((100,"chun1"),(99,"chun2"),(60,"chun3"))
val result1 = seq.groupBy(_._2)println(result1)```结果:HashMap(chun3 -> List((60,chun3)), chun2 -> List((99,chun2)), chun1 -> List((100,chun1)))

6) 元祖

    //元祖val t = (31,"chun1",18)println("id:"+t._1)println("name:"+t._2)println("age:"+t._3)结果:id:31name:chun1age:18

7)filter函数

筛选出列表中符合条件的元素、

    //filter函数val list = List(1,2,3,4,5)val newlist = list.filter(_>3)println(newlist)结果:List(4, 5)

8)count函数

count函数计算列表中满足条件的元素个数

    //count函数val list = List(1,2,3,4,5,6)val newlist = list.count(_>3)println(newlist)结果:2

9)sortBy函数

soryBy函数用于通过他的类型对一个属性或者多个属性进行排序

    //soryBy函数val list = List(2,3,4,1,5,6)val newlist = list.sortBy(x => x)println(newlist)结果:List(1, 2, 3, 4, 5, 6)

10) diff函数(差集)(在set里可以用–)

diff函数保存列表中那些不在另一个列表中的元素,即从集合中减去另一个集合的元素后得到一个新的集合

    //diff函数val list = List(1,2,3,4,5,6)val list1 = List(1,2,3,4)val newlist = list.diff(list1)println(newlist)结果:List(5, 6)

也可以这样写list diff list1

11)union函数或者直接用++,连接两个集合

    //union函数或者++val list1 = List(1,2,3,4,5)val list2 = List(6)val newlist = list1.union(list2)val newlist2 = list1++list2println(newlist)println(newlist2)

12)Intersect函数(在set里可以用&)

    //intersect函数val set1 = Set(1,2,3,4)val set2 = Set(1,2,5,6)val newset = set2 & set1val newset1 = set1 intersect set2println(newset1)println(newset)结果:Set(1, 2)Set(1, 2)

13)take函数

提取列表前n个元素

    //take函数val list = List(1,2,3,4,6,3,5)val takelist = list take 2val takelist2 = list.take(5)println(takelist)println(takelist2)结果:List(1, 2)List(1, 2, 3, 4, 6)

14)drop函数(丢弃前n个元素)

    //drop函数val list = List(1,2,3,4,5,6)var droplist = list drop 2println(droplist)结果:List(3, 4, 5, 6)

15) partition函数(把列表分成两部分,第一部分为满足条件的,第二部分为不满足条件的)(结果为元祖)

    //partition函数val list = List(1,2,3,4,5,6,7,8)val lists = list.partition(_%2==0)println(lists)println(lists._2)结果:(List(2, 4, 6, 8),List(1, 3, 5, 7))List(1, 3, 5, 7)

16)

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

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

相关文章

【转】注册Azure AD 应用程序

作者:陈希章 发表于2017年3月22日 在此前的文章中,我给大家介绍了分别用Graph 浏览器以及第三方工具(POSTMAN)快速体验Microsoft Graph的功能,其中有一个重要的环节就是,开发人员需要访问Microsoft Graph的…

Python + GitHub Actions 实现 CSDN 自动签到与抽奖(非 selenium 版本)

文章目录【1x00】技术栈【2x00】代码实现签到与抽奖【3x00】签到结果通知【03x01】Server 酱【03x02】企业微信【03x03】钉钉【4x00】自动签到【5x00】完整代码【6x00】如何使用【06x01】方法一:直接 Fork 代码(推荐)【06x01】方法二&#xf…

Spark安装配置

Scala基础语法学习的差不多了,先把spark安装上 首先官网下载解压安装后 进入到conf目录下修改文件名 修改spark-env.sh(配置jdk路径) export JAVA_HOME/usr/local/java/jdk1.8.0_221修改slaves(添加子节点名) chun…

【转】注册Azure AD 2.0 应用程序

作者:陈希章 发表于 2017年3月22日 上一篇 介绍了Microsoft Graph应用程序的一些概念,以及目前还比较普遍的Azure AD 1.0应用程序的注册方式。但正如我多次提到的那样,虽然目前功能还在不断完善,但Azure AD 2.0会逐渐成为主流&…

Python 采集 Facebook 评论插件、留言外挂程序

实现时间:2021-05-30实现难度:★★★☆☆☆实现目标:采集 Facebook 评论插件、留言外挂程序的所有评论。完整代码:https://github.com/TRHX/Python3-Spider-Practice/tree/master/CommentPlugin/facebook-comments其他爬虫实战代码…

写第一个spark程序(wordcount)

首先启动集群与spark 其次把spark目录下的README.md上传到hdfs 进入spark下的bin目录,运行spark-shell ./spark-shell运行 val textFile sc.textFile("hdfs://chun1:9000/spark/README.md")val wordCounts textFile.flatMap(line>line.split("…

【中国版Office 365 应用程序注册】

中国版Office 365是由世纪互联进行运营的一个云服务,单纯从技术角度来看的话,它基本保持了与国际版的同步。但是由于两个版本本质上是完全独立的,其中最关键的就是账号系统是分开的,所以从使用角度来看,不管是直接用户…

Python 中如何解决 asyncio 文件描述符最大数量限制问题

文章目录问题复现问题分析事件循环 EventLoopI/O 多路复用select 的缺点解决方法1.更换事件循环选择器2.限制并发量3.修改最大文件描述符限制WindowsLinux总结WindowsLinux问题复现 Windows 平台下,Python 版本 3.5,使用异步框架 asyncio,有…

Spark的Transformations算子(理解+实例)

把每个Transformations算子都敲着练习几遍会理解的更深刻 Transformations算子之后要写action算子才会进行计算。 1. map(func) 描述:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 def main(args: Array[String]): Unit {val conf …

【转】掀起Azure AD的盖头来——深入理解Microsoft Graph应用程序和服务权限声明

引子 这是一篇计划外的文章。我们都知道要进行Microsoft Graph的开发的话,需要进行应用程序注册。这个在此前我已经有专门的文章写过了。但这里存在一个小的问题:国内版的Office 365在申请好之后,并没有像国际版那样,有一个对应的…

Python 异步库 asyncio、aiohttp

asyncio 版本支持 asyncio 模块在 Python3.4 时发布。async 和 await 关键字最早在 Python3.5 中引入。Python3.3 之前不支持。 关键概念 event_loop 事件循环:程序开启一个无限的循环,程序员会把一些函数(协程)注册到事件循环…

Spark-自定义累加器-进行字符串拼接(代码及详细实现步骤)

看longAccumulator()方法源码里是val acc new LongAccumulator然后用register(acc)在Spark中注册了累加器,进入ctrl鼠标左键进入LongAccumulator,可以看到继承了AccumulatorV2[jl.Long, jl.Long],根据LongAccumulator来实现自定义累加器 实现类 //1.继…

Python3 学习系列 丨 博客目录索引

整个博客有关 Python 学习目录索引,方便快捷定位查询基础学习篇 Python3 基础学习笔记 C01【变量和简单数据类型】Python3 基础学习笔记 C02【列表】Python3 基础学习笔记 C03【操作列表】Python3 基础学习笔记 C04【if 语句】Python3 基础学习笔记 C05【字典】Pyt…

【转】日邮物流:实现智慧物流,这个云上对了!

和阳光、空气、水、网络一样,「物流」早已成为当代企业、个人赖以生存的必要条件。2020第一季度全球物流受疫情影响面临挑战,业内普遍预计全球物流及供应链将重新优化布局。借此时机,物流业纷纷将目光投向“数字化智慧物流”方向,…

Spark-三大数据结构之-广播变量

什么是广播变量 分布式只读共享变量 首先广播变量是一个调优策略(可以减少数据的传输,也就是数据从driver传输到executor) (每一个executor都要传list数据,如果数据太多就很慢,采用广播变量他是一个共享只读变量,可以减少数据传…

Python 实现十大经典排序算法

目录排序算法分类一、冒泡排序(Bubble Sort)1、原理2、步骤3、动画演示4、代码实现5、具体示例二、选择排序(Selection Sort)1、原理2、步骤3、动画演示4、代码实现5、具体示例三、插入排序(Insertion Sort&#xff09…

【转】Microsoft Graph 桌面应用程序

桌面应用程序,在我这篇文章的语境中,我是特指在Windows桌面上面直接运行的.NET应用程序,包括Console Application,WPF Application,Windows Forms Application, UWP Application,并且限于篇幅,我…

【转】Microsoft Graph Web应用程序极致开发体验

前言 这篇文章最早写于2017年5月2日,当时的想法是从最简单的方式来写如何在一个ASP.NET MVC应用程序中集成Microsoft Graph,但实际上还真不是那么简单,至少我是不满意的,加上这一两周都比较忙,所以这一篇就一直搁置。…

Spark(idea)操作mysql进行查询和插入 (代码+理解)

首先在maven中加入配置 <!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.27</version></dependency>然后在idea配置数据库 1&#xff09; 查询 //1.查询数…

【转】在无人值守程序(服务)中调用Microsoft Graph

什么是无人值守程序&#xff08;服务&#xff09; 我在此前用了几篇文章分别介绍了在桌面应用程序&#xff08;控制台&#xff09;&#xff0c;Web应用程序&#xff08;ASP.NET MVC&#xff09;&#xff0c;以及PowerSehll脚本中如何访问Microsoft Graph&#xff0c;今天这一篇…