filter函数
🧡作用:对数组元素使用函数进行过滤。
🩷语法:新数组= 旧数组.filter(元素=>bool) 它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。
例一:把数值为偶数的留下来 (1,2,3,4,5)。
代码如下:
def main(args: Array[String]): Unit = {
//把数值为偶数的留下来
val arr1 = Array(1,2,3,4,5)
// val arr2 = arr1.filter( x=>{
// println(x)
// x % 2 == 0
// })
val arr2 =arr1.filter(x => x%2==0)
arr2.foreach(println)
例二: 把小于80分的值去掉 只保留大于80分的分数(90,98,60,49,100)。
代码如下:
var score = Array(90,98,60,49,100)
// 把小于80分的值去掉 只保留大于80分的分数
val score1 =score.filter(x=> x>80).foreach(println)
reduce函数
🍔🍔作用:reduce 是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中的所有元素进行递归处理,并最终将其合并为一个值。
🍟🍟语法:reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。
例一:求数组元素的累加。
代码如下:
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
// 求数组元素的累加
val rst = arr.reduce( (x,y) => x + y)
// val rst = arr.sum
println(s"rst = ${rst}")
}
//运行结果为:
//rst = 15
注意:
reduceLeft 从左往右计算
reduceRight 从右往左计算
如:
def main(args: Array[String]): Unit = {
//redude === reduceLeft 从左往右计算
// reduceRight 从右往左计算
val arr = Array(1,2,3,4)
val rst = arr.reduceLeft( (x,y) => x - y)
val rst1 = arr.reduceRight((x,y)=> x - y)
// val rst = arr.sum
println(s"rst = ${rst}")
println(s"rst1 = ${rst1}")
}
// 运行结果为:
// rst = -8
// rst1 = -2
fold函数
🥪🥪作用:fold 是一种集合操作(与reduce类似),用于对集合中的元素进行聚合操作,返回一个单一的结果,需要提供一个初始的“种子”值。
🌸🌸语法:数组.fold(初值)(函数)
如:
def main(args: Array[String]): Unit = {
// fold:带初始值的reduce
val rst = Array(1,2,3).fold(10)((x,y) =>x+y)
println(s"rst = ${rst}") //16(10 +1+2+3)
}
sorted函数
🩷🩷功能:对元素进行排序。它会直接使用元素自身的自然顺序进行排序
🧡🧡语法:新数组 = 原数组.sorted
如:
def main(args: Array[String]): Unit = {
// 对数值元素排序 从小到大排序
val arr = Array(-1,10,3,2,1).sorted
arr.foreach(println)
// 对字符元素排序 字典顺序
var arr2 = Array("zoom","bus","apple","banana","car").sorted
arr2.foreach(println)
}
// 运行结果为:
-1
1
2
3
10
apple
banana
bus
car
zoom
sortedWith函数
💕💕功能:按自定义规则排序
🎀🎀语法:新数组 = 原数组.sortedWith(排序函数)
例一:对数值元素排序 按照1这个点的距离的从小到大排序(-1,10,-2,1,2,3)
代码如下:
//sortWith:自定义排序
//sorWith((x,y) => 布尔值)
// 1.如果返回值是true 那么x就在y的前面
// 2.如果返回值是false 那么x就在y的后面
def main(args: Array[String]): Unit = {
// 对数值元素排序 按照1这个点的距离的从小到大排序
var arr = Array(-1,10,-2,1,2,3).sortWith((x,y) =>Math.abs(x - 1)<Math.abs(y - 1))
arr.foreach(println)
}
// 运行结果为:
1
2
-1
3
-2
10