在Scala中组合两个MultiMaps

时间:2013-02-22 10:41:48

标签: scala

如何以很好的方式将Scala中的两个MultiMaps与值集合结合起来?

我目前这样做(给定mm1和mm2是具有相同类型的MultiMaps):

val tempmm = (mm1.keySet union mm2.keySet).
               map{k=>(k,(mm1.getOrElse(k,Set()) union mm2.getOrElse(k,Set())))}
tempmm.foreach{case (k,v) => mm1(k)=v}

现在我在mm1中得到了正确的结果。但我确信必须有一个更好的方式。甚至可能是MultiMap中的一个函数。

1 个答案:

答案 0 :(得分:3)

要将mm2合并到mm1,您可以这样做:

for ( (k, vs) <- mm2; v <- vs ) mm1.addBinding(k, v)