您的位置:首页 > 编程语言

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

2017-09-12 14:10 489 查看
一、对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讲 由王家林老师讲解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐