2011-01-14 11 views
4

Wenn eine Sammlung wie eine Arraylist benutzerdefinierte Objekte (z. B. Person mit mehreren Eigenschaften) in Tausenden speichert, gibt es in meinem Code oder im Konstruktor der Sammlung etwas zu tun um es für eine so große Sammlung vorzubereiten.Sammlung optimieren, um eine große Anzahl von Objekten zu speichern

Ich denke nicht wirklich an dedizierte Threads usw., aber eher entlang der Linien des Auslastungsfaktors (muss ich das für das obige Szenario berühren?).

Dank

+0

Das hängt wirklich sehr stark von der tatsächlichen spezifischen Sammlung Implementierung ab. Eine ArrayList ist intern eine ziemlich triviale Angelegenheit und es gibt nicht viel zu tun, außer die richtige Anfangsgröße zu wählen. Andere Arten von Sammlungsimplementierungen können viele Überlegungen enthalten. – Affe

Antwort

6

ich nur die Sammlung zu einer Größe initialisieren würde, die auf die endgültige Größe der Nähe wären, um die Anzahl der resizings zu minimieren:

List<Person> persons = new ArrayList<Person>(1024); 
8

Sie tun können:

new ArrayList<T>(10000); 

, die das Array mit der angegebenen Größe vorge zuordnet (z 10000), so dass es nicht muss neu zuteilen, wie Sie Elemente hinzufügen. Abgesehen davon gibt es nichts, was Sie tun können. Außerdem ist es für die ArrayList egal, welche Art von Referenz sie speichert, so dass Informationen Ihnen bei der Optimierung nicht wirklich helfen können.

11

Ein anderer Ansatz:

Da wir über solch eine riesige Sammlung zu sprechen, die würde "Iss" Sie RAM,
Ich denke, Sie sollten in Betracht ziehen, diese Sammlung in einer Datenbank zu speichern und NUR lesen/schreiben/aktualisieren, wenn Sie müssen.

+3

Zustimmen. Vielleicht wird die Größe der Sammlung dramatisch zunehmen, dass RAM nicht halten kann. –

Verwandte Themen