如何使用JavaConversions将Map的Iterator从Java转换为Scala

Mik*_*378 1 scala scala-java-interop scala-collections

我使用Scala 2.10.3.
result.iterator()回来了Iterator<java.util.Map<String, Object>>.(在Java中)

我想将它转换为Scala等价物.
import scala.collection.JavaConversions._用来试图做到这一点.

但是,它似乎无法考虑类型参数,在这种情况下,它可以转换java.util.Iterator为Scala等效项,但无法转换java.util.Map为Scala等效项.

实际上,此行发生编译器错误:

val results: Iterator[Map[String, AnyRef]] = result.iterator()

    type mismatch;
     found   : java.util.Iterator[java.util.Map[String,Object]]
     required: scala.collection.Iterator[scala.collection.immutable.Map[String,AnyRef]]
     val results: Iterator[Map[String, AnyRef]] = result.iterator()
                                                                ^
Run Code Online (Sandbox Code Playgroud)

有没有简短的方法来做这个伎俩?

sen*_*nia 5

您可以使用JavaConverters而不是JavaConversions像这样明确指定要转换的内容:

import scala.collection.JavaConverters._
def javaIt: java.util.Iterator[java.util.Map[String, Object]] = ???

def scalaIt = javaIt.asScala map {_.asScala}
// Iterator[scala.collection.mutable.Map[String,Object]]
Run Code Online (Sandbox Code Playgroud)