2017-10-17 6 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 lements, 그래서 우리는 문제를 복제하기위한 몇 가지 테스트 데이터를 가지고있다. –

답변

2

반복자는 정확히 한 번만 소비 할 수 있으며, 당신이하려고 것을 볼 수 있습니다 converser가 동일한 경우에도 사례 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)) 

이 어떤 결과 아래에서

경우 3 방법을 사용하여 자바 목록에 스칼라 반복자를 변환하는 간단한 함수를 찾을 수 있습니다 :

[1, 2, 3] 
+0

네, 맞습니다. 블록에서만 3 가지 옵션을 모두 시도했습니다 .. thanks :) – Kalpesh

+0

아무런 문제없이 답을 표시하거나 질문을 닫으십시오 :) – tkachuko