第35讲:List的map、flatMap、foreach、filter操作代码实战

List的Map函数的作用:

map的参数是一个函数,List中的每个元素都应用于这个函数,并且返回一个新的集合。

例如我们有一个List(1,2,3,4) ,我们需要构建List(2,4,6,8)

那么我们就可以使用Map函数,传入一个*2的函数

如下:

scala> val list = List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)

scala> list.map(x => x*2)
res0: List[Int] = List(2, 4, 6, 8)

x => x*2 是一个匿名函数。 List中的每个元素都应用于这个函数。

这种只有一个参数的匿名函数、可以使用_占位符简化写法。

scala> list.map(_*2)
res1: List[Int] = List(2, 4, 6, 8)
scala> val bigData =List("spark","hadoop","hbase")
bigData: List[String] = List(spark, hadoop, hbase)

scala> bigData.map(_.length)
res2: List[Int] = List(5, 6, 5)
scala> bigData.map(_.toList)
res3: List[List[Char]] = List(List(s, p, a, r, k), List(h, a, d, o, o, p), List(h, b, a, s, e))

我们把bigData中的每个单词都倒叙打印

scala> bigData.map(_.toList.reverse.mkString)
res6: List[String] = List(kraps, poodah, esabh)

flatMap函数:

“flatMap “函数的一半功能和map函数一样,不过有个要求,传入的函数在处理完后返回值必须是List(应该是Seq),如果结果不是List(Seq),那么将出错。也就是说,传入的函数是有要求的——返回值是Seq才行。这样,每个元素处理后返回一个List,我们得到一个包含List元素的List,flatMap自动将所有的内部list的元素取出来构成一个List返回。

scala> list.flatMap(_*2)
<console>:12: error: type mismatch;
 found   : Int
 required: scala.collection.GenTraversableOnce[?]
       list.flatMap(_*2)

因为_*2 返回的不是seq,所以报错。

scala> list.flatMap(_ match { case x => List(x*2)})
res5: List[Int] = List(2, 4, 6, 8)

foreach函数:

其参数也是一个函数,对List中的每个元素应用这个参数函数

scala>    var sum =0
sum: Int = 0
scala>    list.foreach(sum +=_)
scala>    println(sum)
10

filter函数:

返回一个List,其参数是一个返回Boolean类型的函数,如果返回值为true,则该元素返回。

如果我们想保留list中的偶数,可以使用如下方法:

scala> list.filter { x => x %2 == 0 }
res9: List[Int] = List(2, 4)
时间: 2024-10-25 07:31:56

第35讲:List的map、flatMap、foreach、filter操作代码实战的相关文章

List的map、flatMap、foreach、filter操作代码实战之Scala学习笔记-27

package com.leegh.dataset /** * @author Guohui Li */object List_HighOrder_Function_Ops { def main(args: Array[String]): Unit = { println(List(1, 2, 3, 4, 6) map (_ + 1)) val data = List("Scala", "Hadoop", "Spark") println(dat

Scala 深入浅出实战经典 第39讲:ListBuffer、ArrayBuffer、Queue、Stack操作代码实战

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③

Scala 深入浅出实战经典 第40讲:Set、Map、TreeSet、TreeMap操作代码实战

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③

王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解

刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark 关注微信账号,获取更多关于王家林老师的课程内容 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载! 百度云盘:http://pan.baidu.com/s/1c0noOt6腾讯微云:http://url.cn/TnGbdC

java1.8 新特性(五 如何使用filter,limit ,skip ,distinct map flatmap ,collect 操作 java集合)

使用filter 根据 条件筛选 出结果:例如 找出 user 中 age >=15 的用户 package lambda.stream; /** * @author 作者:cb * @version 创建时间:2019年1月4日 下午2:35:05 */ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; publi

js map, reduce, forEach, filter的一般实现

map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元. 1> map function map(array, func) { var res = []; for (var i = 0, len = array.length; i < len; i++) { res.push(func(array[i])); } return res; } var res = map([1, 2, 3], fun

第40讲:Set、Map、TreeSet、TreeMap操作代码实战

今天来看下set map的操作,让我们从代码出发 val data = mutable.Set.empty[Int] data ++= List(1,2,3)//在空set上加入列表 data += 4//在set上加入新元素 data --= List(2,3) println(data) //Set(1, 4)data += 1println(data)//Set(1, 4),说明Set元素不能重复data.clear() println(data)//Set() 我们可以看出,Set和Li

第33讲:List的一阶函数操作代码实战详解

操作的参数不是函数,就是一阶函数 我们通过具体的代码来说明: package com.dt.scala.dataset object ListFirstOrderOps {   def main(args: Array[String]): Unit = {     //列表合并,使用:::操作符     println(List(1,2):::List(3,4):::List(5,6))     println(List(1,2):::(List(3,4):::List(5,6)))     /

第37讲:List的foldLeft、foldRight、sort操作代码实战

其实flodLeft和foldRight就是折叠操作,我让们看下下列的函数 折叠操作 def sum(xs:List[Int]):Int = ( 0 /: xs)(_ +_) def product(xs:List[Int]):Int=( 1 /: xs)(_ *_) (fruit.head /: fruit.tail)(_ + " " + _) //用空格连接列表中每个元素 列表排序 sort println(List(1,-4,3,2,6).sortWith(_<_))//L