将scala.collection.Iterator转换为java列表

时间:2017-10-17 13:38:33

标签: scala arraylist iterator

是否有任何直接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 : []

1 个答案:

答案 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]