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)
计算一个映射的惯用方法是什么,该映射的映射是另一个映射的映射,而没有其键是给定集合成员的映射?
例如,从给定的集合和下面的地图:
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)