映射操作是针对容器的典型变换操作,通过对容器中的元素进行某些运算来生成一个新的容器。
两个典型的映射操作是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