高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
(一)map函数
作用:通过对数组的每一个元素应用一个函数来构建一个新数组
语法: 新数组 = 旧数组.map(旧元素=>新元素)
object ddd31 {
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
val fn = (x:Int) => x * 2 // fn 是一个字面里函数
val arr1 = arr.map( fn ) // map是一个高阶函数,因为它的参数类型是 函数!
// 用for循环输出
for(i <- arr1) {
println(i)
}
}
}
把(1,2,3,4,5)——> (1,4,9,16,25)
object ddd31 {
def main(args: Array[String]): Unit = {
val arr = Array(-1,2,-3,4)
val arr1 = arr.map(x => x*x)
for(i <- arr1) {
println(i)
}
}
}
把(-1,2,-3,4)——> (1,2,3,4)
object ddd31 {
def main(args: Array[String]): Unit = {
val arr = Array(-1,2,-3,4)
val arr1 = arr.map(x => if(x>0) x else -x)
for(i <- arr1) {
println(i)
}
}
}
(二)filter 函数
作用:对数组元素使用函数进行过滤。
语法:新数组= 旧数组.filter(元素=>bool) 它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。
object ddd32 {
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
val arr1 = arr.filter(x => x%2 == 0)
arr1.foreach(println)
}
}
(三)reduce函数
作用:reduce 是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中的所有元素进行递归处理,并最终将其合并为一个值。
语法:reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。
计算最大,最小值
object ddd35 {
def main(args: Array[String]): Unit = {
var arr = Array(-1, 20, 30, 14)
// 求最大值
val max = arr.reduce((x,y) => if (x > y) x else y)
println(max) //
// 求最小值
val min = arr.reduce((x, y) => if (x < y) x else y)
println(min) //
}
}