2010-08-25 14 views
14

Wenn ich eine HashSet mit einer Anfangskapazität von 10 und einem Lastfaktor von 0,5 dann alle 5 Elemente hinzugefügt die HashSet wird oder zuerst die HashSet erhöht werden besteht aus 10 Elementen erhöht und nach 15 bei 20 atk. die Kapazität wird erhöht?HashSet Lastfaktor

Antwort

3

Es ist der zweite Fall. Der loadFactor von HashSet und hashMap ist ein relativer Faktor.

19

Der Ladefaktor ist ein Maß dafür, wie voll das HashSet sein darf, bevor seine Kapazität automatisch erhöht wird. Wenn die Anzahl der Einträge in der Hash-Tabelle das Produkt aus dem Ladefaktor und der aktuellen Kapazität überschreitet, wird die Hash-Tabelle erneut erstellt (dh interne Datenstrukturen werden neu erstellt), sodass die Hash-Tabelle ungefähr die doppelte Anzahl an Buckets aufweist.

source

+0

schön !!! Ich habe eine Weile nach dieser Erklärung gesucht. Also ist der Standardwert 2/3, was bedeutet, dass mit der Anfangsgröße von 16, wenn ich 12 auffülle, der Platz vergrößert wird. – ha9u63ar

+0

Für Java 7 und 8 ist der Standardladefaktor für HashSet 0,75. – Kent

2

Standardanfangskapazität der HashMap nimmt, ist 16 und Lastfaktor ist 0.75f ​​(d.h 75% der aktuellen Kartengröße). Der Ladefaktor stellt dar, auf welcher Ebene die HashMap-Kapazität verdoppelt werden sollte.

Zum Beispiel Produkt der Kapazität und der Lastfaktor als 16 * 0,75 = 12. Dies bedeutet, daß der Schlüssel 12 nach dem Speichern - Wertepaares in das HashMap, seine Kapazität wird 32.