2 Stimmen

Wachstumspolitik von ArrayList in Java 6SE

Ich frage mich, ob jemand weiß, das Wachstum Politik der ArrayList in Java 1.6? Die Java-Doku sagt

Die Details der Wachstumspolitik sind nicht spezifiziert, außer der Tatsache, dass das Hinzufügen eines Elements konstante amortisierte Zeitkosten hat.

Aber ich frage mich gerade die Details, weil ich weiß, die Größe, die ich bin Targeting zu starten, aber ich möchte sicherstellen, dass ich die anfängliche Größe groß genug, um nicht dazu führen, dass eine sofortige Größenänderung. Ich weiß, mit HashMap können Sie einen Lastfaktor festlegen, gibt es etwas ähnliches geschieht im Hintergrund? Oder wächst sie immer, wenn kein Platz mehr ist?

6voto

x4u Punkte 13497

ArrayList braucht keinen LoadFactor, da es immer wächst, wenn es zu 100% gefüllt ist. Sie können es also mit genau der Größe erstellen, die Sie im Voraus kennen, und es wird nicht wachsen, wenn Sie später so viele Elemente einfügen. Hashtables hingegen werden immer ineffizienter, je mehr sie gefüllt werden, und so kann man den Kompromiss zwischen Leistung und verschwendetem Speicherplatz mit dem loadFactor einstellen, aber das ist nicht der Fall für wachstumsfähige Arrays wie ArrayList.

3voto

CPerkins Punkte 8819

Das ist es, was ich sehe, wenn ich mir die Quelle der ensureCapacity :

    int newCapacity = (oldCapacity * 3)/2 + 1;

0voto

NILESH SALPE Punkte 145

Int newCapacity = oldCapacity + (oldCapacity >> 1);

Es handelt sich um eine 50%ige Erhöhung.

wenn 100 Elemente vorhanden sind, wird ensureCapacityInternal() auf eine Größe von 150 erhöht.

Bitte prüfen Sie den Quellcode in JDK 7

-1voto

bmargulies Punkte 94152

Sie können die Quelle selbst lesen. Jede Kopie des Sun JDK wird mit einer src.zip-Datei geliefert, die den Quellcode enthält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X