是否有任何直接API可将scala.collection.Iterator转换为java list。
我尝试了以下事项:
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 : []
答案 0 :(得分:2)
Iterator只能被使用一次,我可以看到你试图为 case 3 重用相同的迭代器,即使转换本身是正确的。
下面你可以找到使用案例3中的方法将scala迭代器转换为java列表的简单函数:
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]