在迭代地图时过滤掉键

Bru*_*son 4 foreach iterator scala map filter

迭代地图并过滤掉某些键的最佳方法是什么?伪代码可能是这样的

    map.foreach(tuple where !list.contains(tuple._1) => { })
Run Code Online (Sandbox Code Playgroud)

谢谢布鲁斯

Der*_*att 10

val m = Map(1 -> "a", 2 -> "b", 4 -> "c", 10 -> "d")
val s = Set(1,4)
m.filterKeys { s.contains(_) == false }
// Map(2 -> b, 10 -> d)
Run Code Online (Sandbox Code Playgroud)

但是,如果这是一张巨大的地图和一个巨大的集合,那么我建议先对它们进行排序并相互迭代,然后在你去的时候挑选出你需要的部分.重复的调用contains可能不如你所希望的那样好,特别是如果你使用的是List而不是a Set.

  • 好答案; `(!s.contains(_))`有点短. (4认同)
  • 如果`s`是Set,你可以做`m filterKeys s` (2认同)