[英]How to Convert Map's Iterator from Java to Scala using JavaConversions
I use Scala 2.10.3. 我使用Scala 2.10.3。
I have result.iterator()
returning Iterator<java.util.Map<String, Object>>
. 我有
result.iterator()
返回Iterator<java.util.Map<String, Object>>
。 (in Java so) (在Java中如此)
I want to convert it to the Scala equivalent. 我想将其转换为Scala等效项。
I use import scala.collection.JavaConversions._
to try to do the trick. 我使用
import scala.collection.JavaConversions._
尝试解决问题。
However it seems that it is unable to take into account type parameters, in this case, it can convert java.util.Iterator
to the Scala equivalent, but fails to convert java.util.Map
in the Scala equivalent. 但是,似乎它无法考虑类型参数,在这种情况下,它可以将
java.util.Iterator
转换为Scala等效项,但是无法将java.util.Map
转换为Scala等效项。
Indeed, a compiler error occurs at this line: 确实,在这一行发生编译器错误:
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()
^
Is there a short way to do the trick? 有一种简单的方法可以解决这个问题吗?
You could explicitly specify what you want to convert using JavaConverters
instead of JavaConversions
like this: 您可以使用
JavaConverters
而不是如下所示的JavaConversions
明确指定要转换的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]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.