1. 程式人生 > >flatMap和map的區別

flatMap和map的區別

jdk1.8之後,也加入了Lambda表示式,自然也支援map函式。 scala中這兩個函式的用法。有一種觀點認為將map和flatMap說成Scala函式機制的核心這不過分(在後期開發中會很常用到)。因為實際中我們使用最多的場景就是對資料進行map操作或者flatMap操作。map函式的用法,顧名思義,將一個函式傳入map中,然後利用傳入的這個函式,將集合中的每個元素處理,並將處理後的結果返回。而flatMap與map唯一不一樣的地方就是傳入的函式在處理完後返回值必須是List,其實這也不難理解,既然是flatMap,那除了map以外必然還有flat的操作,所以需要返回值是List才能執行flat這一步。  


    val l1 = List(1,3,4)
    val reslut = l1.flatMap(x => x match {
      case 3 => List(2,3)})


    val l2 = List(1,3,4)
    val reslut = l2.map(x => x match {
      case 3 => List(2,3)}
結果:List(1,2,3,4)
     List(1,List(2,3),4)