2012-03-12 8 views

Respuesta

14

Puede

Vector() ++ myIterator 

que da la cosa correcta con el tipo correcto. Por muy pequeños vectores e iteradores, en los bucles de alto rendimiento, en su lugar puede desear

val b = Vector.newBuilder[WhateverType] 
while (myIterator.hasNext) { b += myIterator.next } 
b.result 

el que hace el trabajo mínimo necesario (por lo que yo sé) para crear un vector. toIndexedSeq básicamente hace esto, pero devuelve un tipo más genérico (por lo que no está realmente garantizado un Vector, incluso si no devuelve ningún Vector ahora.)

6

Puede usar toIndexedSeq. No devuelve estáticamente un Vector, pero en realidad es uno.

+3

Las posibilidades son OP simplemente quiere alguna secuencia indexada, y no necesariamente un 'Vector' específicamente. –

+0

Tienes razón. Necesito (casi) acceso aleatorio de tiempo constante y cálculos de longitud. – Ralph

1

Usted puede uso _*, ya que todo lo que hace es pasar una Seq con todos los argumentos. Sin embargo, será ineficiente, ya que primero convertirá el iterador en una secuencia, y luego usará esa secuencia para crear otra secuencia.

Cuestiones relacionadas