我进行了一些搜索,但尚未找到关于如何过滤出值为None的任何条目的好答案。假设我有这样的 map :
val map = Map[String, Option[Int]]("one" -> Some(1),
"two" -> Some(2),
"three" -> None)
我想最终返回仅包含
("one", Some(1))
和("two", Some(2))
对的 map 。我知道在有列表时,这是通过flatten完成的,但是我不确定如何在不将其拆分为键和值,然后尝试重新加入它们的情况下,在 map 上实现效果。
最佳答案
像scala.collection命名空间中的每个集合类型一样,Map
具有已定义的filter
方法,Option
具有isDefined
方法,其中true
表示Some
,false
表示None
。您可以通过组合以下两个来过滤出None
值:
scala> map.filter(_._2.isDefined)
res4: scala.collection.immutable.Map[String,Option[Int]] = Map(one -> Some(1), two -> Some(2))
关于scala - 过滤映射以获取无值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11854433/