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)

Scala进阶-函数练习相关推荐

  1. 25 scala 进阶

    文章目录 scala 进阶 1.高阶函数 1.1 函数作为参数的函数 1.2 匿名函数 1.3 高阶函数 1.4 高阶函数作为方法的返回类型 1.5 参数类型推断 1.6 闭包与柯里化 2.scala ...

  2. Scala进阶之路-正则表达式案例

    Scala进阶之路-正则表达式案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 废话不多说,正则大家都很清楚,那在Scala如何使用正则了?我们直接上个案例,如下: 1 /* 2 ...

  3. Scala进阶之路-面向对象编程之类的成员详解

    Scala进阶之路-面向对象编程之类的成员详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Scala中的object对象及apply方法 1>.scala 单例对象 ...

  4. scala 字符串函数_Scala中的字符串chomp(或chop)函数

    scala 字符串函数 剁或剁弦 (Chop or Chomp string) It is used to chop off the end of line characters. For this ...

  5. Scala基础 - 函数和方法的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1. 函数和方法 在Scala中函数是一等公民,你可以像操作数字一样将函数赋值给一个变量.使用val语句可以定义函数,def语 ...

  6. 大数据编程语言 Scala 进阶篇

    作者:幻好 来源: 恒生LIGHT云社区 Scala 系列: 2小时速学大数据编程语言 Scala 秘籍 大数据编程语言 Scala 进阶篇 前言 为了能够深入学习大数据框架 Spark 和 Fink ...

  7. Scala:函数与匿名函数

    Scala:函数与匿名函数 函数是第一等公民 函数类型 高阶函数 匿名函数 函数是第一等公民 在scala中,函数是第一等公民 Scala中,函数和变量有同等的位置,或者说函数也是一种变量. Scal ...

  8. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  9. JavaScript 函数,进阶函数

    JavaScript 函数,进阶函数 函数 函数的定义 1.函数声明( function关键字) 2.函数字面量(函数表达式)(由匿名函数实现) 3.构造函数法(调用Function类) 函数的调用 ...

最新文章

  1. HTTP权威指南记录 ---- Web服务器
  2. 用yacc编写的算术运算计算器_Linux里隐藏的计算器,你知道它的奥秘吗?
  3. EOJ_1082_Virtual Friends
  4. TypeScript void 和 undefined 的区别
  5. 推荐15个在线多媒体(图片、音频、视频)编辑器,互联网营销
  6. linux majaro 安装 hp p1106打印机
  7. 无人机中的坐标系与相机姿态计算
  8. Round 2—算法的复杂度
  9. 夜神模拟器android版本修改器,夜神模拟器怎么用 夜神安卓模拟器使用方法大大全...
  10. CFSSL: 证书管理工具:2:创建CA私钥与CA证书
  11. 12、配置路由器的单臂路由(给VLAN配置网关地址)
  12. python《pandas入门》实现Excel数据字段的拆分
  13. 【腾讯云新知实验室】一站式提供视频解决方案
  14. (RN)Region Normalization for Image Inpainting
  15. JSON sever 学习
  16. 为什么资源隔离对HTAP至关重要?
  17. 华为云区块链三大核心技术国际标准立项通过
  18. 《系统集成项目管理工程师》必背100个知识点-55马斯洛需要层次理论
  19. 华为天才少年造出自动驾驶单车!图纸已开源,硬件成本一万,B站老板:重新定义「自行」车
  20. mysql表collate冲突_数据库排序规则的冲突(理解collate Chinese_PRC_CI_AS)

热门文章

  1. nodejs搭配phantomjs highcharts后台生成图表
  2. iOS开发——高级技术本地化与国际化详解
  3. TCL 中upvar 用法 (摘自http://www.cnblogs.com/kane1990/archive/2011/12/19/2293981.html)
  4. APP安全环节缺失,手游运营商怎样应对APP破解困境
  5. JavaScript操作大全整理(思维导图三--函数基础)
  6. Window服务的创建与删除
  7. 一些常用且实用的原生 JavaScript函数[转]
  8. JSP中使用iframe导致内层网页CSS失效问题的解决方案
  9. 5自适应单页源码_超详细!如何建立一个CPA单页网站,附高转化CPA模板源码
  10. sql如何遍历几百万的表_SQL Server遍历表中记录的2种方法(使用表变量和游标)