将Scala迭代器转换为向量

Ral*_*lph 11 scala vector

如何将scala.collection.Iterator包含数千个对象的转换为scala.collection.immutable.Vector

我不相信我可以使用_*因为项目的数量.

Rex*_*err 14

您可以

Vector() ++ myIterator
Run Code Online (Sandbox Code Playgroud)

这给出了正确类型的正确的东西.对于非常小的向量和迭代器,在高性能循环中,您可能希望

val b = Vector.newBuilder[WhateverType]
while (myIterator.hasNext) { b += myIterator.next }
b.result
Run Code Online (Sandbox Code Playgroud)

它完成了创建矢量所需的最少工作(据我所知). toIndexedSeq基本上这样做,但返回一个更通用的类型(所以你实际上Vector并没有保证,即使它Vector现在返回一个.)


Jea*_*let 6

你可以用toIndexedSeq.它不会静态返回a Vector,但它实际上是一个.

  • 机会OP确实只是想要一些索引序列,而不一定是特定的`Vector`. (3认同)