reduce函数
1. 作用:
对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中的所有元素进行递归处理,并最终将其合并为一个值。
2. 语法:
reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。
3.例题:
object basic45 {
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(1,2,3,4,5)
val rst=arr.reduce((x,y)=>y+x)
println(s"rst=${rst}")
}
}
4. reduce 求最值
object basic45 {
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(-1,2,30,5)
// 求最大值
val rst=arr.reduce((x,y)=>if(x>y)x else y)
// 求最小值
val rst1=arr.reduce((x,y)=>if(x<y)x else y)
println(s"rst=${rst}")// 15
println(s"rst=${rst1}")
}
}
reduceLeft-reduceRight
1. reduce具有方向性
案例(一):
object basic46 {
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(1,2,3,4)
// reduce === reduceLeft
val rst =arr.reduceLeft((x,y)=> x - y)
val rst1=arr.reduceRight((x,y)=>x - y)
println(s"rst=${rst}")// -8
println(s"rst1=${rst1}")// -2
}
}
fold
1.作用
fold :与reduce类似,都是做聚合操作。但是,它有一个初始值
基本案例:
object basic47 {
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(1,2,3,4)
// 10就是初始值
val rst =arr.fold(10)( (x,y)=> x + y)
println(s"rst=${rst}")// 20
}
}
sorted
1. sorted排序
功能:按自定义规则排序
object basic48 {
def main(args: Array[String]): Unit = {
// 定义一个数组
// val arr=Array(-1,20,3,40)
// // 10就是初始值
// var arr1=arr.sorted
// arr1.foreach(println)
// 对数值进行排序:从小到大排序
Array(-1,20,-100,3,40).sorted.foreach(println)
// 对字符排序:按照字典顺序
Array("zip","bus","apple","banana","card").sorted.foreach(println)
}
}
sortWith
1.sortWith 自定义排序规则
2. 对数值进行排序:按照0点的距离大小进行排序
object basic49 {
// sortWith 自定义排序规则
def main(args: Array[String]): Unit = {
Array(-1,2,0,4,9).sortWith((x, y) => Math.abs(x - 0) < Math.abs(y- 0)).foreach(println)
// sortWith((x,y)=> 布尔值)
// true: x 应该要排在y的前面
// false: x要排在y的后面
}
}
3.任务:从大到小排序?
object basic50 {
// sortWith 自定义排序规则
def main(args: Array[String]): Unit = {
// Array(-1,2,0,4,9).sortWith((x, y) => Math.abs(x - 0) < Math.abs(y- 0)).foreach(println)
// 任务:从大到小排序?
Array(-1,2,0,4,9).sortWith((x, y) => x>y ).foreach(println)
}
}