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))