第十章 Scala 容器基础(十五):使用flatten方法来展开一个元素为集合的集合

Problem

    如何把一个嵌套集合展开为一个平铺的单层集合。

Solution

    使用flatten方法来吧一个嵌套集合转化为一个单层集合。为了说明这一点,我们先来创建一个嵌套结合撸啊撸

scala> val lol = List(List(1,2), List(3,4))
lol: List[List[Int]] = List(List(1, 2), List(3, 4))

    使用flatten方法来展开一个潜逃集合:

scala> val result = lol.flatten
result: List[Int] = List(1, 2, 3, 4)

    就像你看到的,flatten方法如其名,把嵌套集合内部的集合展开成为单层集合。flatten方法不只能展开List嵌套,还能应用于其它集合比如Array、ArrayBuffer、Vector等。

scala> val a = Array(Array(1,2), Array(3,4))
a: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))

scala> a.flatten
res7: Array[Int] = Array(1, 2, 3, 4)

    我们来看一个真实的用例,需求是我们要给所有参加婚礼的夫妻打印一个邀请函,每对夫妻每人一份邀请函,并且邀请函的名字首字母要大写:

scala> val couples = List(List("kim", "al"), List("julia", "terry"))
couples: List[List[String]] = List(List(kim, al), List(julia, terry))

scala> couples.flatten.map(_.capitalize)
res8: List[String] = List(Kim, Al, Julia, Terry)

    flatten方法还有至少两个非常有用的地方,第一个是,你可以把一个字符串的集合展开为一个字符集合,应为字符串本身就是字符的集合:

scala> val list = List("Hello", "world")
list: List[String] = List(Hello, world)

scala> list.flatten
res9: List[Char] = List(H, e, l, l, o, w, o, r, l, d)

    第二,因为Option类型可以被认为是一个容器,里面包含0个活着1个元素,flatten方法是非常有效的对于Some和None组成的集合。它可以展开Some元素形成一个新的集合,同时去掉None元素。

scala> val x = Vector(Some(1), None, Some(3), None)
x: scala.collection.immutable.Vector[Option[Int]] = Vector(Some(1), None, Some(3), None)

scala> x.flatten
res10: scala.collection.immutable.Vector[Int] = Vector(1, 3)


转载于:https://my.oschina.net/nenusoul/blog/657526

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala ,可以使用 mutable 包的 Set 类来定义可变集合。以下是定义一个初始元素为 5、6、7、8 的可变集合的代码: ```scala import scala.collection.mutable.Set val b = Set(5, 6, 7, 8) ``` 在这个例子,我们首先导入了 mutable 包的 Set 类。然后,我们使用 Set 类的 apply 方法来创建一个新的可变集合 b,初始元素为 5、6、7、8。注意,我们没有使用 new 关键字来创建 Set 对象,而是直接调用了 Set 类的 apply 方法。这是因为 Scala 的 apply 方法可以被省略,所以我们可以直接写 Set(5, 6, 7, 8) 来创建一个新的 Set 对象。 现在,我们已经创建了一个可变集合 b,可以使用各种方法来操作它。例如,我们可以添加新元素到 b : ```scala b += 9 ``` 这个语句将元素 9 添加到了集合 b 。现在,b 的元素为 5、6、7、8、9。 我们还可以使用 += 方法一次添加多个元素: ```scala b += (10, 11, 12) ``` 这个语句将元素 10、11、12 一次性添加到了集合 b 。现在,b 的元素为 5、6、7、8、9、10、11、12。 除了添加元素,我们还可以从集合删除元素: ```scala b -= 5 ``` 这个语句将元素 5 从集合 b 删除。现在,b 的元素为 6、7、8、9、10、11、12。 总之,Scala 的可变集合提供了各种方法来添加、删除、修改和查询集合的元素。使用可变集合可以方便地操作数据,但也要注意不要滥用可变状态,以避免产生意外的副作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值