Scala高阶函数2

package gxy

object Test16 {
def main(args: Array[String]): Unit = {
//scala 的 reduce
//定义一个数组
Array(1,2,3,4,5)
//求和 (1,2,3,4,5) ===> 一个值
//求和 (1,2,3,4,5) ===> 一个值
// val res1 = Array(1,2,3,4,5).reduce( (x,y) => x+y )
// val res2 = Array(1,2,3,4,5).reduceLeft( (x,y) => x+y )
// val res3 = Array(1,2,3,4,5).reduceRight( (x,y) => x+y)
// println(res1,res2,res3) //15,15,15

val res2 = Array(1, 2, 3,4,5).reduceLeft((x, y) => x - y)
val res3 = Array(1, 2, 3,4,5).reduceRight((x, y) => x - y)
println(res2,res3) //-13,3

//计算最大值,最小值
val res4 = Array(-1,2,10,55).reduce( (a,b) => {if(a>b) a else b})
val res5 = Array(-1,2,10,55).reduce( (a,b) => {if(a<b) a else b})
println(res4,res5) //55,-1

//scala的 fold 作用:带初始值的reduce
// 格式: fold(初始值)(二元函数 => 返回值)
// val res1 = Array(1000,1500,1800,2000).fold(100000)((x,y)=>x+y)
// println(res1)
val res1 = Array(1000, 1500, 1800, 2000).fold(100000)((x, y) => if(x>y) y else x)
println(res1) //1000


//scala的sorted
//作用:排序,按自然顺序对数组元素排序(数字:从小到大,字母:字典顺序),返回排序之后的新数组
//var arr1 = Array(1,2,0,1,3,-1).sorted
//注意:不加()
var arr1 = Array("a","f","apple","park","zoom","school").sorted
//打印一个数组
arr1.foreach(println)

//scala的sortWith
//作用:排序函数返回 ture 表示第一个元素应该排在第二个函数之前
// Array(-1,0,1,3,2).sortWith((a,b) => boolean)
//数字a,到0点的距离是 |a-0|
// Array(-1,0,1,3,2).sortWith((a,b) => math.abs(a-0) < math.abs(b-0) ).foreach(println)

//练习:按它们到2点的距离从大到小排列
Array(-1,0,1,3,2).sortWith((x,y) => math.abs(x-2) > math.abs(y-2) ).foreach(println)



}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值