定義:高階函數(帶有函數參數的函數):把一個函數作爲另一個函數的參數值
高階函數示例
(*)map:相當於一個循環,對某個集合中的每個元素進行操作(就是接受一個函數),返回一個新的集合
val numbers = List(1,2,3,4,5,6,7,8,9,10)
numbers.map((i:Int)=>i*2)
簡寫 numbers.map(_ * 2)
(*)foreach:相當於一個循環,對某個集合中的每個元素進行操作(就是接受一個函數),不返回結果
numbers.foreach((i:Int)=>i*2)
(*)filter: 過濾,選擇滿足條件的數據
查詢能夠被2整除的數字
numbers.filter((i:Int)=> i%2==0) 如果是true,就返回結果
(*)zip: 合併集合
List(1,2,3).zip(List(4,5,6))
(*)partition: 根據斷言(就是條件,通過一個匿名函數來實現)的結果,來進行分區
舉例:把能夠被2整除的分成一個區,不能整除的分成另一個區
numbers.partition((i:Int)=> i%2==0)
(*)find: 查找第一個滿足條件(斷言)的元素
查詢第一個能夠被3整除的數字
numbers.find(_%3 == 0)
(*)flatten:把嵌套的結構展開
List(List(2, 4, 6, 8, 10),List(1, 3, 5, 7, 9)).flatten
(*)flatMap 相當於 map + flatten
var myList = List(List(2, 4, 6, 8, 10),List(1, 3, 5, 7, 9))
myList.flatMap(x=> x.map(_*2))
結果 res16: List[Int] = List(4, 8, 12, 16, 20, 2, 6, 10, 14, 18)
過程: (1)將List(2, 4, 6, 8, 10)和List(1, 3, 5, 7, 9)調用x=> x.map(_*2)
(2)再合併成一個List