Conversión implícita entre colecciones de Java y Scala utilizando JavaConversions
Fusioné una scalaSet
de scalaMap
s usando una función genérica
def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] =
(Map[A, B]() /: (for (m <- ms; kv <- m) yield kv))
{
(a, kv) =>
a + (if (a.contains(kv._1)) kv._1 -> f(a(kv._1), kv._2) else kv)
}
Esto maneja el caso cuando hay un choque de las mismas teclas. Sin embargo, quería hacerlo con colecciones de Java en Scala Code. Investigué un poco y encontréJavaConversions
. Lo importé y escribí esto
def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] =
(new util.HashMap[A, B] /: (for (m <- ms; kv <- m) yield kv))
{
case (a, kv) =>
a + (if (a.contains(kv._1)) kv._1 -> f(a(kv._1), kv._2) else kv)
}
Sin embargo, dice que hay un desajuste de tipo
Error:(67, 11) type mismatch;
found : scala.collection.mutable.Map[A,B]
required: java.util.HashMap[A,B]
a + (if (a.contains(kv._1)) kv._1 -> f(a(kv._1), kv._2) else kv)
^
No esJavaConversions
usado para convertir implícitamenteutil.HashMap
amutable.Map
? ¿Que me estoy perdiendo aqui?