35.List的map、flatMap、foreach、filter操作代码实战

来源:互联网 发布:苹果cms 仿08影院模板 编辑:程序博客网 时间:2024/06/10 19:00

一、对List的map、flatMap实战

map:对List所有元素执行一个具体的函数

flatMap:对List内部的成员进行map,结果为List,再对这个结果flat合并,产生合并后的集合

     println(List(1,2,3,4,5) map(_ + 1))  //相当于map(item => item + 1)    val data = List("scala", "hadoop", "spark")    println(data map(_.length))  //对data中每一个元素计算长度    println(data map(_.toList.reverse.mkString))  //把data中每一个元素由字符串转换成List,再反转,再转换成字符串        println      println(data map(_.toList))    println(data flatMap(_.toList))    //混合使用flatMap和map   println(List.range(1,10) flatMap(i => List.range(1,i) map (j => (i,j))))

输出:

List(2, 3, 4, 5, 6)
List(5, 6, 5)
List(alacs, poodah, kraps)

List(List(s, c, a, l, a), List(h, a, d, o, o, p), List(s, p, a, r, k))
List(s, c, a, l, a, h, a, d, o, o, p, s, p, a, r, k)
List((2,1), (3,1), (3,2), (4,1), (4,2), (4,3), (5,1), (5,2), (5,3), (5,4), (6,1), (6,2), (6,3), (6,4), (6,5), (7,1), (7,2), (7,3), (7,4), (7,5), (7,6), (8,1), (8,2), (8,3), (8,4), (8,5), (8,6), (8,7), (9,1), (9,2), (9,3), (9,4), (9,5), (9,6), (9,7), (9,8))


二、对List的foreach、filter实战

foreach:对所有元素应用一个具体的函数。与map的区别:不产生结果,类型为Unit

filter:过滤出列表中符合条件的元素,filter参数为结果为Boolean的函数

    var sum = 0    List(1,2,3,4,5) foreach(sum += _)  //把List的每一个元素都加起来    println(sum)            println(List(1,2,3,4,5,6,7,8,9,10) filter(_ % 2 == 0))  //过滤出所有的偶数    println(data filter(_.length == 5))   //过滤出长度为5的元素

输出:

15
List(2, 4, 6, 8, 10)
List(scala, spark)


参考资料来源于大数据梦工厂 深入浅出scala 第35讲 由王家林老师讲解




阅读全文
0 0
原创粉丝点击