[JAVA] Drei Punkte, um ArrayList effizient zu nutzen

Schließlich ist die häufig verwendete Implementierungsklasse von List ArrayList. Hier sind drei Punkte zu beachten, da Sie es effizient nutzen sollten, wenn Sie es mit aller Kraft einsetzen.

Grundidee

ArrayList ist eine Klasse zum Realisieren von Arrays variabler Länge. Es wird intern mithilfe von Arrays implementiert, reguläre Arrays haben jedoch eine feste Länge. Um eine variable Länge zu realisieren, müssen Sie ein neues Array mit größerer Größe erstellen und die Daten darauf kopieren, wenn das ursprünglich vorbereitete Array nicht ausreicht. Wenn Sie Daten in die Mitte einfügen, werden alle nachfolgenden Elemente kopiert und verschoben. Mit zunehmender Größe des Arrays wird der Prozess des Regenerierens und Kopierens eines solchen Arrays sehr langsam. Daher ist es wichtig, zu verhindern, dass eine solche Verarbeitung stattfindet, um ArrayList effizient zu verwenden.

3 Punkte

Anfängliche Größeneinstellung

Sie können die Anfangsgröße im ArrayList-Konstruktor angeben. Da das Array zuerst mit der angegebenen Anfangsgröße generiert wird, wird das Array erst neu generiert, wenn es diese Größe überschreitet.

Wenn die Anzahl der Elemente beispielsweise höchstens 100 beträgt, wird eine ArrayList mit einer Anfangskapazität von 100 erstellt, indem Sie die folgenden Schritte ausführen.

List<String> list = new ArrayList<String>(100);

ensureCapacity sureCapacity ist eine Methode, um die Größe von ArrayList sicherzustellen. Es wird verwendet, wenn die im Konstruktor angegebene Anfangsgröße wahrscheinlich stark überschritten wird. Wenn Sie beispielsweise einer ArrayList, die mit einer Anfangsgröße von 100 initialisiert wurde, 1000 Elemente hinzufügen und 1000-mal normal hinzufügen, kann die Regeneration in der Mitte mehrmals erfolgen. Mit sureCapacity wird die Größe jedoch im Voraus auf 1000 erweitert. Wenn Sie dies tun, müssen Sie es nur einmal tun.

trimToSize trimToSize ist eine Methode, mit der die Größe von ArrayList um die aktuelle Anzahl von Elementen gekürzt wird. Wenn beispielsweise eine mit einer Anfangsgröße von 1000 initialisierte ArrayList nur 100 Elemente enthält, werden 900 Bereiche verschwendet, sodass Sie diesen Bereich abschneiden können, um ihn freizugeben. Natürlich ist die Größe kleiner. Wenn Sie danach versuchen, ein Element hinzuzufügen, wird das Array neu zugewiesen. Daher wird empfohlen, es zu verwenden, wenn das Element bei der nachfolgenden Verarbeitung nicht hinzugefügt wird.

Recommended Posts

Drei Punkte, um ArrayList effizient zu nutzen
[Java] Verwendung von List [ArrayList]
[Leicht verständliche Erklärung! ] Verwendung von ArrayList [Java]
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung von Map
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Lassen Sie uns den Pfad durchgehen, um Docker-Slim zu verwenden
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung der Warteschlange mit Priorität
[Rails] Verwendung von Enum
Verwendung von Java Optional
Verwendung von JUnit (Anfänger)
Verwendung von Ruby return
[Rails] Verwendung von Enum
Verwendung von @Builder (Lombok)
Verwendung der Java-Klasse
Wie man Big Decimal benutzt
[Java] Verwendung von removeAll ()
Verwendung von String [] args
Verwendung von Rails Join
Verwendung von Java Map
[Java] Gründe für die Verwendung von statischen
Rbenv-Befehl zur Verwendung von Ruby
Ruby: Wie man Cookies benutzt
Verwendung von abhängigen :: zerstören
Verwendung von Eclipse Debug_Shell
Verwendung von Apache POI
[Rails] Verwendung der Validierung
Verwendung von Java-Variablen
[Rails] So verwenden Sie authenticate_user!
Verwendung von GC Viewer
[Java] Konvertiert ArrayList in Array