2012-04-08 3 views
7

Ich benutze derzeit scala 2.9.1. ich eine mutable.HashMap mit:Ändern der Standardkapazität/Ladefaktor von scala mutable.HashMap

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

ich irgendwie neu in scala bin. In Java konnte ich die Kapazität und den Ladefaktor im Konstruktor einer HashMap angeben. Ich bin nicht in der Lage, irgendeine Möglichkeit zu finden, dasselbe in scala zu tun.

Vielen Dank im Voraus

Antwort

4

Nach der API, das scheint nicht möglich zu sein. Eine Erklärung ist, dass veränderbare Sammlungen dringend davon abgeraten werden und unveränderbare Sammlungen die Standardkapazitätsinformationen nicht benötigen, da die Anzahl der Elemente zum Zeitpunkt der Konstruktion bekannt sein muss.

Beachten Sie jedoch, dass Scala implizit Standardkapazitätsinformationen verwendet, wenn Sie eine Sammlung (einschließlich änderbarer und unveränderbarer HashMap) über die vielen verfügbaren Erfassungsmethoden erstellen. Wenn Sie z. B. map unter HashMap aufrufen, wird map verwendet, das auf TraversableLike definiert ist (siehe unten). Sie können sehen, dass es dem Builder, der diese Kapazitätsinformationen bereitstellt, einen Größenhinweis gibt.

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

Danke .. aber meine Forderung war actaully für eine Java wie HashMap, wo ich den loadfactor usw. bei der Erstellung angeben kann (ich habe anschließend meinen Algorithmus zu einem funktionalen Stil geändert .. aber ich war in eines interessiert direktes Äquivalent nicht weniger :) .. Akzeptieren Sie die Antwort trotzdem –