You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何保留Map指定键并过滤其余键?

在Scala中过滤Map仅保留指定键

针对你定义的Map:

val x = Map("a"->10, "b"->20, "c"->30, "d"->40)

这里有几种简单实用的方法来保留"a"和"c"键,过滤其他条目:

  • 使用filterKeys方法(最简洁的方式):
    利用filterKeys结合集合的包含判断,快速筛选出目标键:

    val targetKeys = Set("a", "c")
    val filteredMap = x.filterKeys(targetKeys)
    // 结果: Map(a -> 10, c -> 30)
    

    这里targetKeys(k)等价于targetKeys.contains(k),Set的contains操作是O(1),效率很高。

  • 使用collect方法(更灵活的场景):
    如果需要在过滤时对键值对做额外处理,collect结合模式匹配会更合适:

    val targetKeys = Set("a", "c")
    val filteredMap = x.collect { case (k, v) if targetKeys.contains(k) => (k, v) }
    
  • 直接构造新Map(适用于键数量少且确定存在的情况):
    如果明确知道"a"和"c"一定在原Map中,可以直接构造新Map:

    val filteredMap = Map("a" -> x("a"), "c" -> x("c"))
    

    要是不确定键是否存在,改用get避免抛出异常:

    val filteredMap = Map("a" -> x.get("a"), "c" -> x.get("c")).collect {
      case (k, Some(v)) => (k, v)
    }
    

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:42:11