Scala中映射操作map與flatMap函數

映射操作是針對容器的典型變換操作,通過對容器中的元素進行某些運算來生成一個新的容器。

兩個典型的映射操作是map方法和flatMap方法,二者區別簡而言之在與map直接處理容器內單個元素,flatMap會將元素進一步打碎處理。

map

map方法將某個函數應用到集合中的每個元素,映射得到一個新的元素,因此,map 方法會返回一個與原容器類型大小都相同的新容器,只不過元素的類型可能不同。

  @Test
  def testMap(): Unit = {
    /**
     * 測試map與flatMap方法
     */
    val list = List("張大川", "李二狗", "王三順", "鄧老五")

    val newList = list.map(elem => elem)

    newList.map(elem=>println(elem.getClass))
  }

輸出結果

class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String

flatMap

flatMap方法稍有不同,它將某個函數應用到容器中的元素時,對每個元素都會返回一個容器(而不是一個元素),然後,flatMap把生成的多個容器“拍扁”成爲一個容器並返回。返回的容器與原容器類型相同,但大小可能不同,其中元素的類型也可能不同。

  @Test
  def testFlatMap(): Unit = {
    /**
     * 測試map與flatMap方法
     */
    val list = List("張大川", "李二狗", "王三順", "鄧老五")

    val newList = list.flatMap(elem => elem)

    newList.map(elem=>println(elem.getClass))
  }

輸出結果

char
char
char
char
char
char
char
char
char
char
char
char
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章