Как удалить значение ключа с карты, когда ключи хранятся в списке в scala

У меня есть список ключей и следующая карта:

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

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

Я хочу удалить все ключи, которые есть в списке ключей.

Я знаю, что могу выполнить итерацию по списку ключей и проверить, содержит ли карта ключ, и если да, то я могу удалить его.

Есть ли более простой способ сделать это без повторения списка ключей, в котором я просто предоставляю список ключей, и все ключи, представленные в списке, отфильтровываются с карты?

Спасибо


29
2

Ответы:

Преобразуйте список ключей в Set, а затем используйте filterKeys, чтобы выбрать все ключи, которых нет в этом наборе:

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