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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值