映射操作是針對容器的典型變換操作,通過對容器中的元素進行某些運算來生成一個新的容器。
兩個典型的映射操作是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