【问题标题】:Filter matching and non-matching elements into different halves of a tuple将匹配和不匹配的元素过滤到元组的不同部分
【发布时间】:2013-07-22 03:08:28
【问题描述】:

在 Scala 中是否有一种简单有效的方法来执行以下操作?

val elements = List(1, 2, 3, 4, 5, 6)
val (odd, even) = elements.filter(_ % 2 == 0)

我知道groupBy,但我想要一些可以与恒定数量的组一起工作的东西,这些组可以提取到单独的值中。

【问题讨论】:

  • 我认为当“组”的数量大于 2 时,基于元组的解决方案没有任何特别的优势(当有两个时,partition,正如 gzm0 指出的那样,是最佳解决方案)。请记住,TupleNNNN 仅限于 22 个(迄今为止)。如果您的群组数量超过这个数量,您别无选择,只能使用groupBy

标签: scala scala-collections


【解决方案1】:

List.partition 做你想做的事:

val (even, odd) = elements.partition(_ % 2 == 0)

请注意,它仅适用于两个最终组。

【讨论】:

猜你喜欢
  • 2019-08-28
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多