将基于布尔值的集合拆分为2个Scala集合

时间:2018-05-02 11:49:35

标签: scala collections filter

我想只执行一次转换,最后我得到一个(Array[Person], Array[Person])元组,基于满足条件语句,其中拆分基于true, false

类似于.filter,基于true, false而不是true来分割输出。

我目前有这个,但想在一个声明中这样做。

case class Person(age: Int)

val persons: Array[Person] = Array(Person(15), Person(17), Person(30), Person(35))

val adults: Array[Person] = persons.filter(p => isAdult(p.age))
val kids: Array[Person] = persons.filter(p => !isAdult(p.age))

def isAdult(age: Int): Boolean = age > 18

一个集合API是否可以在一次操作中执行此操作?

2 个答案:

答案 0 :(得分:3)

是的,就像这样

persons.partition(p => isAdult(p.age))

答案 1 :(得分:0)

您可以使用partition方法。 喜欢 persons.partition(p => isAdult(p.age))