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

你可能感兴趣的:(后端开发)