简体   繁体   English

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

[英]Remove an entry from a Map and return a new Map

I want to check if a Map doesn't contain empty values. 我想检查Map是否不包含空值。 If the value is empty it shouldn't includen in the new Map. 如果值为空,则不应包含在新Map中。

I tried something like: 我尝试过类似的东西:

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

This does exactly do what I want, but it is not very nice. 这确实做到了我想要的,但它不是很好。 Is there a better solution? 有更好的解决方案吗?

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>

You mean empty as in null? 你的意思是空,如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)

EDIT: dang... @missingfaktor beat me to it... :) 编辑:当... @missingfaktor打败了我... :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM