计算映射的惯用方法是什么,映射的映射是另一个映射的映射,没有其键是给定集合成员的映射?
例如,从下面给定的集合和地图:
Map(A -> v, B -> w, C -> x, D -> y, E -> z)
Set(A, C, E)
我们的功能会产生:
Map(B -> w, D -> y)
答案 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)