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

时间:2014-01-28 13:11:17

标签: scala scala-collections scala-java-interop

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

我想将其转换为Scala等效词 我使用import scala.collection.JavaConversions._来尝试这个技巧。

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

确实,此行发生编译错误:

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()
                                                                ^

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

1 个答案:

答案 0 :(得分: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]]