2012-01-18 10 views
2

マップに空の値が含まれていないかどうかを確認します。値が空の場合は、新しいマップに含めないでください。マップからエントリを削除して新しいマップを返します

私のようなものを試してみました:

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

これはまさに私がやりたいんが、それは非常に素晴らしいではありません。より良い解決策はありますか?

答えて

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> 
2

ヌルと同じ意味ですか?

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:ダン...私は正しく私の仮名のスペルをstackoverflowの上の最初の人であるため:)

+3

+1 ...それを打つ@missingfaktor。 – missingfaktor

+2

@missingfaktor "コピーアンドペーストの力は、開発者に彼の力を与えるものです。" –

関連する問題