从地图中删除条目并返回新地图

时间:2012-01-18 19:49:09

标签: scala

我想检查Map是否包含空值。如果该值为空,则不应包含在新Map中。

我尝试过类似的事情:

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

这完全符合我的要求,但不是很好。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:10)

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>

答案 1 :(得分:2)

你的意思是空,如null?

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打败了我...... :)