Scala - 删除所有键不在给定集中的映射

Scala - Drop all mappings whose keys are not in a given set

计算一个映射的惯用方法是什么,该映射的映射是另一个映射的映射,而没有其键是给定集合成员的映射?

例如,从给定的集合和下面的地图:

Map(A -> v, B -> w, C -> x, D -> y, E -> z)
Set(A, C, E)

我们的函数将产生:

Map(B -> w, D -> y)

过滤一下:

val map = Map("A" -> "v", "B" -> "w", "C" -> "x", "D" -> "y", "E" -> "z")
val set = Set("A", "C", "E")

map.filterKeys(!set.contains(_))

结果:

res0: scala.collection.immutable.Map[String,String] = Map(B -> w, D -> y)

您可以使用 Map

中的 -- 方法

def --(xs: GenTraversableOnce[A]): Map[A, B]

Creates a new collection from this collection by removing all elements of another collection.

scala> val map = Map("A" -> "v", "B" -> "w", "C" -> "x", "D" -> "y", "E" -> "z")
map: scala.collection.immutable.Map[String,String] = Map(E -> z, A -> v, B -> w, C -> x, D -> y)

scala> val set = Set("A", "C", "E")
set: scala.collection.immutable.Set[String] = Set(A, C, E)

scala> val filter = map -- set
filter: scala.collection.immutable.Map[String,String] = Map(B -> w, D -> y)