scala - 过滤映射以获取无值

标签 scala functional-programming hashmap filtering

我进行了一些搜索,但尚未找到关于如何过滤出值为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表示Somefalse表示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/

相关文章:

java - 无法在 Java 中向 LinkedHashMap 添加元素

java - 注释的 Scala 类型别名

scala - SBT 失败,错误为 `String.class is broken`

scala - 如何使用 zio-json 而不是 null 将 None 编码为缺少的 json 字段?

java - 在 java 8 中映射有序列表

functional-programming - SKI 变换,如何用函数式语言编程

scala - 为什么是 List[T] 而不是 List[Int]? T是什么意思?

python - 什么时候应该使用函数柯里化(Currying)?

ruby - 迭代哈希数组并显示在 ruby​​ 的下拉列表中

java - HashMap 到 txt 文件 - 在 Java OOP 中写入键和值