将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 : [] 
+0

请包括一个示例迭代器与一些e因为我们有一些测试数据来复制这个问题 –

迭代器可以准确地一次消耗,我可以看到你尝试重复使用相同的迭代器的情况下案件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] 
+0

是的,你是对的我正在尝试块中的所有3个选项..谢谢:) – Kalpesh

+0

没问题,请标记答案为正确或关闭问题:) – tkachuko