将scala.collection.Iterator转换为java列表
问题描述:
是否有任何将scala.collection.Iterator转换为java列表的直接API。将scala.collection.Iterator转换为java列表
我尝试以下操作:
val xs = Iterator[POJO]
println("xs size : " + xs.size)
import com.google.common.collect.Lists;
val p = Lists.newArrayList(xs)
**output** :
xs size : 1
p : [empty iterator]
的情况下2:
val input:Iterator[POJO] = xs.asJava
val m = ImmutableList.copyOf(input)
println("m value : " + m.toString())
**output**:
xs size : 1
m value : []
的情况下3:
val n = xs.toList.asJava;
println("n value : " + n.toString())
**output**
n value : []
答
迭代器可以准确地一次消耗,我可以看到你尝试重复使用相同的迭代器的情况下案件3即使转换本身是正确的。
下面你可以找到简单的功能,使用方法阶迭代器转换为Java列表中情况下3:
def iteratorToJavaList[T](iterator: Iterator[T]): java.util.List[T] = {
import collection.JavaConverters._
iterator.toList.asJava
}
,它可以这样使用:
val scalaIterator = List(1, 2, 3).iterator
println(iteratorToJavaList(scalaIterator))
导致:
[1, 2, 3]
请包括一个示例迭代器与一些e因为我们有一些测试数据来复制这个问题 –