2.0 查找
利用迭代器查找,如果找到返回该元素的Option,如果没有返回None
@Testdef test11(): Unit = {val ints: Array[Int] = Array(1, 27, 301)val maybeInt: Option[Int] = ints.find(item => item % 2 == 0)if (maybeInt.nonEmpty) {println("有值")println(maybeInt)} else {println("无值")}}
2.1 过滤
返回ture的时候过滤掉,并返回一个新的集合
object Test01_Demo {def main(args: Array[String]): Unit = {var list = List(1,99,3,8,2,6)// 1 过滤val value: List[Int] = list.filter(item => item % 2 == 0)println(value)}}

2.2 映射
集合中的每一个元素 转成 所想要的元素 并返回一个新的集合
object Test01_Demo {def main(args: Array[String]): Unit = {var list = List(1,99,3,8,2,6)// 2 映射val value1 = list.map(item => item * item)println(value1)}}

2.3 扁平化
二维集合 转成 一维集合
object Test01_Demo {def main(args: Array[String]): Unit = {// 3 扁平化val list2 = List(List(1,2),List(3,4),List(5,6))val flatten = list2.flattenprintln(flatten)}}

2.4 映射 扁平化
将Map集合映射成二维集合,再将二维集合 转成 一维集合
object Test01_Demo {def main(args: Array[String]): Unit = {// 4 映射+扁平化val list3 = List("a xixi","b haha","c xixi" )val value2: List[Array[String]] = list3.map(item => item.split(" "))val flatten1: List[String] = value2.flattenprintln(flatten1)val value3: List[String] = list3.flatMap(item => item.split(" "))println(value3)}}

2.5 分组
list.groupBy(item => item % 2 == 0) 返回值作为 组名,符合条件进入该组(相同组名)
object Test01_Demo {def main(args: Array[String]): Unit = {var list = List(1,99,3,8,2,6)// 5 分组val value4: Map[Boolean, List[Int]] = list.groupBy(item => item % 2 == 0) // 奇偶分组println(value4)for(key:Boolean <- value4.keys){println(s"$key ==> ${value4(key)}")}}}

object Test01_Demo {def main(args: Array[String]): Unit = {// 5 分组val value4: Map[Boolean, List[Int]] = list.groupBy(item => item % 2 == 0) // 奇偶分组/*println(value4)for(key:Boolean <- value4.keys){println(s"$key ==> ${value4(key)}")}*/val list4 = List("xixi","haha","hadoop","hbase","hive","spark","flink")val value5: Map[Char, List[String]] = list4.groupBy(item => item.charAt(0))println(value5)for (key:Char <- value5.keys){println(s"$key ===> ${value5(key)}")}}}

2.6 Reduce
(A1,A1)=> A1
2.6.1 从左往右
val res = list.reduce((a,b)=> a+b)val res = list.reduceLeft((a,b)=> a+b)

2.6.2 从右往左
val res = list.reduceRight((a,b)=> a-b) // 1 - ( 3 - ( 54 - 77 ) )


2.7 fold(折叠)
有初始值的Reduce
2.7.1 从左往右
list.foldLeft(initValue)((a,b)=> a+b)

2.7.2 从右往左
val list = List(1,3,54,77)val res = list.foldRight(10)((a, b) => a - b) // 1 - ( 3 - (54 - ( 77 - 10 ) ))println(res) // -15
Reduce和Fold的异同
- 都是规约聚合
 - Fold可以指定一个初值进行聚合,而Reduce是集合中的第一个或者最后一个当做初值
 

