Don*_*oby 19 collections scala
我有一些代码产生Map
值是Option
类型的地方,我当然想要一个只包含实际值的地图.
所以我需要转换它,我在代码中提出的是
def toMap[K,V](input: Map[K, Option[V]]): Map[K, V] = {
var result: Map[K, V] = Map()
input.foreach({
s: Tuple2[K, Option[V]] => {
s match {
case (key, Some(value)) => {
result += ((key, value))
}
case _ => {
// Don't add the None values
}
}
}
})
result
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,但看起来不够优雅.我怀疑这个内置于我缺少的馆藏库中的东西.
是否有内置的东西,或更实用的方法来实现这一目标?
Tom*_*icz 10
input flatMap {case(k,ov) => ov map {v => (k, v)}}
Run Code Online (Sandbox Code Playgroud)
for ((k, Some(v)) <- input) yield (k, v)
Run Code Online (Sandbox Code Playgroud)
从后来的问题来看,这是franza的答案,但值得重新发布.
归档时间: |
|
查看次数: |
1044 次 |
最近记录: |