首页 > 解决方案 > 以有效的方式从scala中的序列中过滤选项

问题描述

我想摆脱.isDefined.get,任何好的建议

 val t = Seq(Option("abc"), Option("def"), Option("abc"), Option(""))
 t.filter(_.isDefined).groupBy(x =>x.get)

我需要我的返回类型Map[String, Seq[String]]

标签: listscala

解决方案


由于您需要filter同时map,您可以collect

t.collect { case Some(s) if s.nonEmpty => s }.groupBy(identity)

结果是

Map("abc" -> Seq("abc", "abc"), "def" -> List("def"))

您可以在 Scastie 上使用此代码。

collect 您可以在官方文档中阅读更多信息。


推荐阅读