2012-03-12 4 views

cevap

14

Doğru türü ile doğru şeyi verir

Vector() ++ myIterator 

can. Çok küçük vektörler ve yineleyiciler için, yüksek performanslı döngüler içinde, bunun yerine bir vektör oluşturmak için (bildiğim kadarıyla) gerekli asgari çalışır

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

isteyebilirsiniz. öyle hepsi geçecek olduğundan toIndexedSeq, esasen bunu yapar, ama (böylece aslında şimdi Vector dönmek bile, bir Vector garanti ediyoruz.) daha genel bir tür

6

toIndexedSeq'u kullanabilirsiniz. Statik olarak bir Vector döndürmez, ancak aslında birdir.

+3

Şanslar OP gerçekten sadece bazı dizinlenmiş diziler istiyor ve özellikle bir "Vector" değil. –

+0

Haklısınız. Sabit zamanlı rasgele erişim ve uzunluk hesaplarına (yakın) ihtiyacım var. – Ralph

1

Sen can kullanımını _* döndürür Tüm argümanlar ile Seq. Ancak, ilk önce yineleyici bir diziye dönüştürüleceği ve daha sonra başka bir dizisi oluşturmak için bu diziyi kullanacağı için verimsiz olacaktır.