Удалить запись с карты и вернуть новую карту - PullRequest
3 голосов
/ 18 января 2012

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

Я пробовал что-то вроде:

val newmap = map.map{ entry => if(!entry._2.isEmpty()) Map(entry._1 -> entry._2)}

Это именно то, что я хочу, но это не очень приятно.Есть ли лучшее решение?

Ответы [ 2 ]

10 голосов
/ 18 января 2012
scala> Map(1 -> List(3, 4), 2 -> Nil, 3 -> List(11))
res2: scala.collection.immutable.Map[Int,List[Int]] = Map(1 -> List(3, 4), 2 -> List(), 3 -> List(11))

scala> res2.filter(_._2.nonEmpty)
res3: scala.collection.immutable.Map[Int,List[Int]] = Map(1 -> List(3, 4), 3 -> List(11))

scala>
2 голосов
/ 19 января 2012

Вы имеете в виду пустой как в нуле?

scala> val map = collection.immutable.HashMap[Int, String] (1 -> "a", 2-> "b", 3 -> null)
map: scala.collection.immutable.HashMap[Int,String] = Map(1 -> a, 2 -> b, 3 -> null)

scala> val newmap=map filter (_._2 != null)
newmap: scala.collection.immutable.HashMap[Int,String] = Map(1 -> a, 2 -> b)

РЕДАКТИРОВАТЬ: черт побери ... @missingfaktor избил меня до этого ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...