2012-04-08 14 views
7

Attualmente sto usando scala 2.9.1. creo un mutable.HashMap utilizzando:Cambia capacità predefinita/fattore di carico di scala mutable.HashMap

> val m = mutable.HashMap.empty[Int, Int] 

Sono sorta di nuovo alla Scala. In java, sono stato in grado di specificare la capacità e il fattore di carico nel costruttore di una HashMap. Non sono in grado di trovare alcun modo per fare lo stesso in scala.

Grazie in anticipo

risposta

4

Secondo l'API, questo non sembra essere possibile. Una spiegazione è che le collezioni mutabili sono fortemente scoraggiate, e le collezioni immutabili non hanno bisogno delle informazioni sulla capacità predefinita poiché il numero di elementi deve essere noto al momento della costruzione.

Tuttavia, si noti che Scala utilizzerà implicitamente le informazioni sulla capacità predefinita se si costruisce una raccolta (incluso mutabile e immutabile HashMap) tramite i numerosi metodi di raccolta disponibili. Ad esempio, se si chiama map su un HashMap, verrà utilizzato map definito su TraversableLike (riprodotto di seguito), e si può vedere che fornisce un "suggerimento di dimensione" al costruttore che fornisce tali informazioni sulla capacità.

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { 
    val b = bf(repr) 
    b.sizeHint(this) 
    for (x <- this) b += f(x) 
    b.result 
} 
+1

Grazie .. ma la mia richiesta è stata actaully per un java come HashMap dove posso specificare la loadfactor ecc al momento della creazione (che ho successivamente modificato il mio algoritmo per uno stile più funzionale .. ma ero interessato a un equivalente diretto non inferiore :) .. Accettando comunque la risposta –

Problemi correlati