当键存储在scala列表中时如何从地图中删除键值

How to remove key value from map when keys are store in list in scala

我有以下键和映射列表:

val keys = List("key1", "key2", "key5")

Map("key1" -> 1, "key2" -> 2, "key3" ->3, "key4" -> 4, "key5" -> 5)

我想删除键列表中的所有键。

我知道我可以遍历键列表并检查映射是否包含键,如果包含我可以删除它。

有没有更简单的方法在不迭代键列表的情况下执行此操作,其中我只提供键列表并且列表中显示的所有键都从映射中过滤掉?

谢谢

将键列表转换为 Set,然后使用 filterKeys 到 select 所有不在该集合中的键:

val kSet = keys.toSet
map.filterKeys(!kSet.contains(_))

你可以使用--方法

val keys = List("key1", "key2", "key5")
val map = Map("key1" -> 1, "key2" -> 2, "key3" ->3, "key4" -> 4, "key5" -> 5)
map -- keys