高阶函数2

33 阅读1分钟

reduce

作用:reduce是一种集合操作,用于集合中的元素进行聚合操作,但会一个单一的结果。

//reduce求和
object scala32 {
  def main(args: Array[String]): Unit = {
  //定义一个数组
    val arr = Array(1,2,3,4,5)
    val rst = arr.reduce( (x,y)  =>  x + y )
    println(s"rst = ${rst}")
  }
}
//求最大值
object scala33 {
  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 )
    println(s"rst = ${rst}")
  }
}

//求最小值
object scala33 {
  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 )
    println(s"rst = ${rst}")
  }
}

//默认下都是从左往右计算
//reduceRigh从右往左计算
//reduceLeft从左往右计算
object scala33 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4)
    //val rst = arr.reduceLeft( (x,y)  =>  x - y )
    val rst = arr.reduceRight( (x,y)  => x - y )
    println(s"rst = ${rst}")
  }
}

fold

作用:fold是一种集合操作(与reduce类似),同为集合操作,返回一个单一的结果需要提供一个初始的“种子”。


object scala34 {
  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}")
  }
}

sorted排序

object scala35 {
  //sorted排序
  def main(args: Array[String]): Unit = {
    
    //对竖直进行排序:从小到大顺序
    Array(-1,20,-100,3,40).sorted.foreach(println)

    //对字符排序:按照字典顺序
    Array("map","car","pig","dog","apple").sorted.foreach(println)
  }
}

object scala35 {
  //sortwith自定义排序规则
  def main(args: Array[String]): Unit = {

    //对数值进行排序:按离0点的距离大小进行排序
    //sortwith((x,y) => 布尔值)
    //ture : x 应该要排在y后面
    //false:y 要排在y的后面
    Array(-1,20,-100,3,40).sortWith((x,y) => Math.abs(x-0) < Math.abs(y-0)).foreach(println)
    //从大到小排序
    //Array(-1,20,-100,3,40).sortWith((x,y) => x>y).foreach(println)

  }
}