2017-10-17 83 views
0

是否有任何將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因爲我們有一些測試數據來複制這個問題 –

回答

2

迭代器可以準確地一次消耗,我可以看到你嘗試重複使用相同的迭代器的情況下案件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