Я пытаюсь сравнить ключи Scala HashMap со списком значений, если ключ не существует в списке, мне нужно обновить значение карты до значения по умолчанию -1.
Например: рассмотрим следующий случай:
Список:
val pos = List("100","110")
Карта:
scala> idSizeMap
res2: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363, 120 -> 1825405636, 130 -> 2194234, 72 -> 3685020648)
Используя filterKeys, я могу сделать пересечение как операция
scala> val result = idSizeMap.filterKeys(pos.contains)
result: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363)
Но вместо этого я также хочу ключи на старой карте со значением по умолчанию -1. Ожидаемый результат:
Map(100 -> 4240070722, 110 -> 611884363, 120 -> -1, 130, -1, 72 -> -1)
Также я попробовал следующее, которое выполняет ту же операцию, что и filterKeys:
var similarItems = Map[String, Long]()
similarItems: scala.collection.immutable.Map[String,Long] = Map()
scala> for (eachpos <- pos) {
| if (!eidSizeMap.contains(eachpos)) similarItems += (eachpos -> -1)
| else
| similarItems += (eachpos -> eidSizeMap(eachpos))
| }
scala> similarItems
res8: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363)
Какой наиболее подходящий Scala способ достижения этого?