2017-10-09 3 views
0

同じタイプの新しい不変のマップを取得:Scalaは:キー上の2つの不変のマップをマージして、私はタイプ以下の同じキー上の2つの不変のマップをマージしたい

scala.collection.immutable.HashMap [文字列、配列[文字列]

と戻り型は、同じでなければならない。 scala.collection.immutable.HashMap [文字列、配列[文字列]]例えば

scala> map2 
res17: scala.collection.immutable.HashMap[String,Seq[String]] = Map(key1 -> List(value1-2), key2 -> List(value2)) 

scala> map3 
res18: scala.collection.immutable.HashMap[String,Seq[String]] = Map(key1 -> List(value1-3), key3 -> List(value3)) 


merging above two map should be output to: 

Map(key1->List(value1-2,value1-3), key2->List(value2), key3->List(value3)) 

注:++オペレータが不変であるため、新しいMapはなり

map2 ++ map3.map{ case (k,v) => k -> (v ++ map2.getOrElse(k,Nil)) } 

:文字列

+0

確かに重複しています。その質問に対するscalazの答えは文字通り 'map2 | + | map3' –

答えて

2

の配列の戻りは、マップが値として文字列の配列を持つべきではないのSeqあなたはこのような二つのマップをマージすることができます作成した。

+0

迅速なヘルプのためのR. Fossatiさん、ありがとうございました..私は、Javaの背景からScalaに移動しており、Scalaにはかなり異なる構文と簡略表記があるため、苦労しています... –

関連する問題