1、foreach 函数
遍历集合中的元素,具体遍历到每个元素的时候,做什么事情,那是由调用者来确定的
object High5 {
def main(args: Array[String]): Unit = {
val arr1:Array[Int] = Array(30,50,70,60,10,20)
foreach(arr1,a=>{
println(a)
})
foreach(arr1,println)
//println: 本身为接收一个Any类型返回一个Unit类型
}
def foreach(arr:Array[Int],op:Int => Unit) ={
for (elem <- arr) {
op(elem)
}
}
}
2、filter 函数
过滤,过滤条件可以通过一个返回 boolean 的函数来体现
object High5 {
def main(args: Array[String]): Unit = {
val arr1:Array[Int] = Array(30,5,7,60,1,20)
val arr2 = filter(arr1,x => x%2==0)
//val arr2 = filter(arr1,_ %2==0) 这样写也可以
foreach(arr2,println)
val arr3 = filter(arr1,x => x>25)
foreach(arr3,println)
}
def filter(arr:Array[Int],condition:Int => Boolean)={
//通过一个数组,得到一个新的数组 for 推导
for(elem <- arr if condition(elem)) yield elem
}
def foreach(arr:Array[Int],op:Int => Unit) ={
for (elem <- arr) {
op(elem)
}
}
}
3、map 函数
映射,一进一出
bject High5 {
def main(args: Array[String]): Unit = {
val arr1:Array[Int] = Array(30,5,7,60,1,20)
val arr2 = map(arr1,x=>x*x)
foreach(arr2,println)
}
def foreach(arr:Array[Int],op:Int => Unit) ={
for (elem <- arr) {
op(elem)
}
}
def map(arr:Array[Int],op:Int => Int)={
for(elem <- arr) yield op(elem)
}
}
4、reduce 函数
聚合操作
object High5 {
def main(args: Array[String]): Unit = {
val arr1: Array[Int] = Array(30, 5, 7, 60, 1, 20)
val result = reduce(arr1,(x,y)=>x+y)
println(result)
}
/**
* 聚合操作
* 1 2 3 4 5 6 .... 100
* op:(c1,c2)=>r
* c1 表示上次聚合的结果,c2 表示这次参与聚合的元素
* @param arr
*/
def reduce(arr:Array[Int],op:(Int,Int)=>Int) : Int={
var sum = 0
for (elem <- arr) {
// Array(30,5,7,60,1,20)
sum=op(sum,elem)
}
sum
}
}