私はこのような2つのマップを持っているとしましょう。Scalaの2つのマップを交差させて結合/結合する
val m1 = Map(1 -> "One", 2 -> "Two", 3 -> "Three")
val m2 = Map(2 -> 2.0, 3 -> 3.0, 4 -> 4.0)
キーに基づいて交差を取得し、マージされた値を表すタプルを返したいとします。結果は次のようになります。
Map(2 -> (Two,2.0), 3 -> (Three,3.0))
私は
val merged = m1 collect {
case (key, value) if m2.contains(key) => key -> (value, m2(key))
}
のようなものに頼ることができますしかし、それを行うには、「より多くの慣用的な」方法がないと仮定しますか?私の直感は、私は新しいMap
にキーの交差点、その後map
それらを入手Set
val merged = m1.intersect(m2)
このソリューションは私の顔を真っ赤にしていました。 :-)パフォーマンスが 'collect'変種とはまったく違うのだろうかと思います。 – andyczerwonka