Неявное преобразование между коллекциями Java и Scala с использованием JavaConversions
Я слил скалуSet
СкалаMap
с использованием универсальной функции
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)
}
Это обрабатывает случай, когда происходит столкновение тех же клавиш. Однако я хотел сделать это с помощью коллекций Java в Scala Code. Я немного исследовал и наткнулсяJavaConversions
, Я импортировал это и написал это
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)
}
Тем не менее, это говорит о несоответствии типов
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)
^
Не являетсяJavaConversions
используется для неявного преобразованияutil.HashMap
вmutable.Map
? Что мне здесь не хватает?