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

时间:2015-10-14 13:18:40

标签: scala dictionary set

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

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

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

我们的功能会产生:

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

2 个答案:

答案 0 :(得分:6)

您可以使用Map

中的--方法
  

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

     

通过删除所有元素,从此集合中创建新集合   另一个系列。

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)

答案 1 :(得分:2)

只需过滤它:

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)