19

私は地図を持っています:

Map("key1" -> Some("value1"), "key2" -> None, "key3" -> Some("value3"))

Noneすべての要素を削除してマップを平坦化したい。それを達成する最も簡単な方法は何ですか?私はこの方法だけを見つけました:

Map("key1" -> Some("value1"), "key2" -> None, "key3" -> Some("value3")).filter(_._2.nonEmpty).map(item => (item._1 -> item._2.getOrElse(Nil)))

結果は次のとおりです。

Map(key1 -> value1, key3 -> value3)

もっと良い方法を知っていますか?

4

5 に答える 5

20

for-comprehension + パターンマッチングを使用できます:

for((k, Some(v)) <- yourMap) yield k -> v
于 2015-09-15T17:12:11.097 に答える
1

理解のために使用する私の見解:

val m = Map("key1" -> Some("value1"), "key2" -> None, "key3" -> Some("value3"))
for( (key,value) <- m if(value.isDefined)) yield (key,value.get)
于 2013-06-19T09:42:50.353 に答える