高阶函数(上)

map

逐个操作集合中的元素,注意有别于Map

  • 先定义一个集合
val l = List(1,2,3,4,5,6,7,8)
  • 逐个加1
// 匿名函数
l.map((x:Int)=>x+1) // (2,3,4,5,6,7,8,9)
  • 可以简化参数类型
l.map((x) => x+1)       // scala自动推断参数类型
  • 省略括号
// 当括号里只有"一个"元素时,可以省略括号
l.map( x => x+1)
  • 使用占位符语法
l.map( _ + 1 )  // 每个元素+1

// 打印
l.map(_ + 1).foreach(println)

flatMap

对每个元素进行操作后,返回的不是新的元素,而是“容器”;

多个元素,自然就有了多个“容器”;

之后再把这“多个容器”拍扁,使之成为新的元素集合。

val l = List("Hadoop","Hive","Spark")
// List(H, A, D, O, O, P, H, I, V, E, S, P, A, R, K)
l flatMap (s => s.toUpperCase)

filter

过滤元素,只有满足条件的元素才会被返回,满足条件的元素形式一个新的容器

val l = List(1,2,3,4,5,6,7,8)
// 使用filter过滤
l.filter(_>5).foreach(println)  // 大于5
// 能被2整除
l filter (_%2==0)   // 有返回值,可赋予变量
// 包含某个元素(字符串中应用较多)
s filter (kv => kv._2 contains "xiamen")
// 取前几个元素
println(l.take(3))

猜你喜欢

转载自www.cnblogs.com/JZTX123/p/10623803.html