何千ものオブジェクトを含むscala.collection.Iterator
をscala.collection.immutable.Vector
に変換するにはどうすればよいですか?スカライテレータからベクトルへの変換
商品数のために_*
を使用できるとは思われません。
何千ものオブジェクトを含むscala.collection.Iterator
をscala.collection.immutable.Vector
に変換するにはどうすればよいですか?スカライテレータからベクトルへの変換
商品数のために_*
を使用できるとは思われません。
あなたは正しいタイプで正しいものを与え
Vector() ++ myIterator
をすることができます。非常に小さなベクトルとイテレータのために、高性能なループでは、あなたの代わりにベクトルを作成するために、(私の知る限りでは)必要最低限の作業を行う
val b = Vector.newBuilder[WhateverType]
while (myIterator.hasNext) { b += myIterator.next }
b.result
に望むことができます。 toIndexedSeq
これは、本質的に行いますが、より一般的なタイプが返されます(あなたが実際にそれが今Vector
を返さない場合でも、Vector
を保証していない。)
toIndexedSeq
を使用できます。それは静的にVector
を返しませんが、実際には1つです。
それがないすべてに合格しているので、あなたは、_*
を使用することができますすべての引数を持つSeq
。しかし、最初はイテレータをシーケンスに変換し、そのシーケンスを使用しての別のシーケンスを作成するため、効率が悪くなります。
OPは実際にはインデックス付きシーケンスを必要としているだけで、必ずしも「Vector」である必要はありません。 –
あなたは正しいです。私は一定時間ランダムアクセスと長さの計算が必要です。 – Ralph