Scala filter一个序列,用于映射符合和不符合过滤条件的元素

Scala filter一个序列,用于映射符合和不符合过滤条件的元素,scala,filter,Scala,Filter,我有一系列字符串: val results = Seq("", "one", "two", "three") 使用两个过滤器,我得到: val emptyStrings: Seq[String] = results.filter( s => s.isEmpty ) val notEmptyStrings: Seq[String] = results.filterNot( s => s.isEmpty )

我有一系列字符串:

val results = Seq("", "one", "two", "three")
使用两个过滤器,我得到:

val emptyStrings: Seq[String] = results.filter( s => s.isEmpty )
val notEmptyStrings: Seq[String] = results.filterNot( s => s.isEmpty )
是否可以通过一个过滤器获得一个
Map[Boolean,Seq[String]]

  • key=isEmpty true/false
  • 值=空字符串或非空字符串
更好的选择是使用
分区
,因为它返回一个包含2个值的元组,而不是映射:

scala> results.partition(_.isEmpty)
res1: (Seq[String], Seq[String]) = (List(""),List(one, two, three))
或者更好地将结果与命名值进行模式匹配:

scala> val (emptyStrings, nonEmptyStrings) = results.partition(_.isEmpty)
emptyStrings: Seq[String] = List("")
nonEmptyStrings: Seq[String] = List(one, two, three)
scala> val (emptyStrings, nonEmptyStrings) = results.partition(_.isEmpty)
emptyStrings: Seq[String] = List("")
nonEmptyStrings: Seq[String] = List(one, two, three)