1. 程式人生 > 其它 >48_Scala 自帶集合運算元(filter、map、flatten、flatMap、group、reudce、fold)

48_Scala 自帶集合運算元(filter、map、flatten、flatMap、group、reudce、fold)

1. filter 運算元

  object filterTest extends App {
    /*
    *  filter
    *     作用 : 傳輸過濾集合元素的函式,返回一個符合條件元素的新陣列
    *
    *     定義 : def filter(p: A => Boolean): List[A]
    *
    *     注意 : 1. 要搞清楚集合元素型別,示例 map (String,Int)
    *
    * */
    var list = List(1, 3, -1, 5, 10)
    var map = Map[String, Int]("x" -> 10, "y" -> 9, "z" -> 8)

    
//1. 過濾>0的元素 val newList: List[Int] = list.filter(_ > 0) println(newList) //List(1, 3, 5, 10) //2. 過濾 key!=x 的元素 private val newMap: Map[String, Int] = map.filter(_._1 != "x") println(newMap) //Map(y -> 9, z -> 8) //3. 關於匿名函式 // 1.什麼是匿名函式 // 函式定義作為 引數傳入
// 2.匿名函式格式 // (引數名稱:引數型別) => {方法體} // 3.簡化的原則 // 1. 引數型別可以省略 // (引數名稱) => {方法體} // 2. 引數型別省略後, 如果只有一個引數,()可以省略 // 引數名稱 => {方法體} // 3. 當方法體只有一行時 {}可以省略 // 引數名稱 => 方法體 // 4. 當方法體內 只使用一次引數時,可以省略 () => ,方法體內用 _來代替
// _ > 1 //匿名函式 示例 //需求 : 過濾 key!=x 的元素 def f1(tp: (String, Int)): Boolean = { tp._1 != "x" } private val newMap1: Map[String, Int] = map.filter(f1) //非匿名函式 private val newMap2: Map[String, Int] = map.filter( //匿名函式 (tp: (String, Int)) => { tp._1 != "x" } ) private val newMap3: Map[String, Int] = map.filter( //匿名函式(簡化1-去掉資料型別) (tp) => { tp._1 != "x" } ) private val newMap4: Map[String, Int] = map.filter( //匿名函式(簡化2-去掉資料型別+去掉()) tp => { tp._1 != "x" } ) private val newMap5: Map[String, Int] = map.filter( //匿名函式(簡化3-去掉資料型別+去掉()+去掉{}) tp => tp._1 != "x" ) private val newMap6: Map[String, Int] = map.filter( //匿名函式(簡化4-去掉資料型別+去掉()+去掉{}+去掉 引數名=>) _._1 != "x" ) println(newMap1) println(newMap2) println(newMap3) println(newMap4) println(newMap5) println(newMap6) }