2015-10-14 63 views
4

想象一下,您有一个Map[Option[Int], String],并且您想要一个Map[Int, String]丢弃包含None作为关键字的条目。从Scala集合中提取选项的最简单方法

又如,这应该以某种方式相似是List[(Option[Int], String)]并将其转换为List[(Int, String)],再次丢弃含有None作为第一元件的元组。

什么是最好的方法?

回答

7

collect是你的朋友在这里:

例如数据定义地图

scala> data collect { case (Some(i), s) => (i,s) } 
res4: scala.collection.immutable.Map[Int,String] = Map(1 -> data) 

同样的方法适用于元组的列表

val data = Map(Some(1) -> "data", None -> "") 

解决方案

scala> data.toList collect { case (Some(i), s) => (i,s) } 
res5: List[(Int, String)] = List((1,data)) 
相关问题