2017-10-17 6 views
0

Y at-il une API directe pour convertir scala.collection.Iterator en liste java.convertir scala.collection.Iterator à la liste java

J'ai essayé des choses suivantes:

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] 

Cas n ° 2:

val input:Iterator[POJO] = xs.asJava 
val m = ImmutableList.copyOf(input) 
println("m value : " + m.toString()) 
**output**: 
xs size : 1 
m value : [] 

Cas n ° 3:

val n = xs.toList.asJava; 
println("n value : " + n.toString()) 
**output** 
n value : [] 
+0

Veuillez inclure un exemple d'itérateur avec une poignée d'e lements, de sorte que nous ayons quelques données de test pour répliquer le problème –

Répondre

2

Iterator peut être consommé exactement une fois et je peux voir que vous essayez de réutiliser le même itérateur pour le cas même si sur lui-même est correct.

Ci-dessous vous trouverez la fonction simple qui convertit iterator scala à la liste java en utilisant l'approche dans cas 3:

def iteratorToJavaList[T](iterator: Iterator[T]): java.util.List[T] = { 
    import collection.JavaConverters._ 
    iterator.toList.asJava 
    } 

et il peut être utilisé comme ceci:

val scalaIterator = List(1, 2, 3).iterator 
println(iteratorToJavaList(scalaIterator)) 

qui résultats:

[1, 2, 3] 
+0

Oui, vous avez raison J'essayais toutes les 3 options en bloc seulement .. merci :) – Kalpesh

+0

Pas de problèmes, s'il vous plaît soit marquer la réponse comme correcte ou fermer la question :) – tkachuko