Vier Methoden der Java ArrayList -Durchquerung und Verwendung der ArrayList -Klasse in Java
Paket com.test; import Java.util.ArrayList; Import Java.util.iterator; Import Java.util.List; öffentliche Klasse ArrayListDemo {public static void main (String args []) {list <string> list = new ArrayList < String> (); (IT1.Next ()); für (String TMP: List) {System.out.println (TMP); Get (i));PS: Verwendung der ArrayList -Klasse in Java
1. Was ist ArrayList
ArrayList ist das legendäre dynamische Array.
Dynamisch erhöhen und Elemente verringern
Icollection- und ilist -Schnittstellen implementieren
Flexible Einstellung der Arraygröße
2. Verwenden Sie ArrayList
Das einfachste Beispiel:
ArrayList List = New ArrayList (); 5); // Entfernen Sie das 6. Element für (int i = 0; i <3; i ++) // 3 weitere Elementeliste hinzufügen. .ToArray (typeof (int32)); // Zurück das in ArrayList enthaltene Array zurückgeben
Dies ist ein einfaches Beispiel.
3. Wichtige Methoden und Eigenschaften von ArrayList
1) Konstruktor
ArrayList bietet drei Konstruktoren:
öffentliche ArrayList ();
Der Standardkonstruktor initialisiert das interne Array mit der Standardgröße (16)
öffentliche ArrayList (iCollection);
Mit einem Icollection -Objekt konstruiert und Elemente der Sammlung zur ArrayList hinzufügen
öffentliche ArrayList (int);
Initialisieren Sie das interne Array mit der angegebenen Größe
2) Issynchronisierte Eigenschaft und ArrayList.Synchronisierte Methode
Die isynchronisierte Eigenschaft gibt an, ob die aktuelle ArrayList -Instanz die Thread -Synchronisation unterstützt, während die statische Methode der ArrayList.Synchronisierte eine Kapselung der ArrayList -Threadsynchronisation zurückgibt.
Wenn Sie nicht-Thread-Synchronisierungsinstanzen verwenden, müssen Sie die Sperre manuell anrufen, um die Synchronisation bei der Thread beispielsweise beim Zugriff auf Multi-Threads zu halten:
ArrayList List = New ArrayList ();
Die Syncroot -Eigenschaft ist tatsächlich selbst, aber um die Syncroot -Definition der Icollection zu erfüllen,
Hier verwenden wir immer noch Syncroot, um die Standardisierung des Quellcodes aufrechtzuerhalten
{list.add ("ein Element hinzufügen");Wenn Sie die von der ArrayList zurückgegebene Instanz verwenden Durch die Instanz von ArrayList.Synchronized verwendet jede Eigenschaft das Schlüsselwort Sperre, um die Synchronisation der Thread zu gewährleisten.
3) Zählen Sie Attribut und Kapazitätsattribut
Die Eigenschaft von Count ist die Anzahl der derzeit in ArrayList enthaltenen Elemente, und diese Eigenschaft ist schreibgeschützt.
Die Kapazitätseigenschaft ist die maximale Zahl, die ArrayList derzeit enthalten kann.
4) Hinzufügen, Hinzufügen, Entfernen, Entfernen, Entferner, Einfügen, Insertrange
Diese Methoden sind ähnlich
Die Methode hinzufügen wird verwendet, um ein Element zum Ende der aktuellen Liste hinzuzufügen
Die AddRange -Methode wird verwendet, um am Ende der aktuellen Liste eine Elementstapel hinzuzufügen
Die Entfernenmethode wird verwendet, um ein Element zu löschen und es durch die Referenz des Elements selbst zu löschen.
Die Removeat -Methode wird verwendet, um ein Element zu löschen und es zu löschen, indem der Wert indiziert wird.
Removerange wird verwendet, um eine Stapel von Elementen zu löschen, die durch Angabe des Startindex und der Anzahl der Deletten gelöscht wird.
Insert wird verwendet, um der angegebenen Position ein Element hinzuzufügen, und die Elemente hinter der Liste werden wiederum rückwärts verschoben.
Insertrange wird verwendet, um eine Reihe von Elementen aus der angegebenen Position hinzuzufügen, und die Elemente hinter der Liste werden nach hinten nach hinten verschoben.
Darüber hinaus gibt es mehrere ähnliche Methoden:
Die klare Methode wird verwendet, um alle vorhandenen Elemente zu löschen.
Enthält die Methode wird verwendet, um festzustellen, dass sich ein Objekt nicht in der Liste befindet
Ich werde nicht mit dem Rest belastet.
5) METHODION TRIMSIZE -Methode
Diese Methode wird verwendet, um die ArrayList mit der Größe des tatsächlichen Elements zu beheben.
6) TOARRAY -Methode
Diese Methode kopiert das ArrayList -Element in ein neues Array.
4. ArrayList- und Array -Konvertierung
Beispiel 1:
ArrayList List = New ArrayList (); ;
Beispiel 2:
ArrayList List = New ArrayList (); ;
Das obige führt zwei Methoden zur Konvertierung von ArrayList in Array ein
Beispiel 3:
ArrayList List = New ArrayList (); ; / /Korrekte String [] values = (String [])
Anders als Arrays, da sie in Objekt -Arrays konvertiert werden können, wird jedoch keinen Fehler in der ArrayList hinzugefügt. Elemente, ansonsten werden eine Ausnahme, die nicht transformiert werden kann, geworfen.
5. Beste Ratschläge zur Verwendung von ArrayList
In diesem Abschnitt werden wir den Unterschied zwischen ArrayList und Array sowie die Effizienz der ArrayList erörtern
1) ArrayList ist eine komplexe Version von Array
ArrayList fasst ein Array von Objekttypen zusammen.
Bestimmen Sie die Größe des tatsächlichen Elements.
6) TOARRAY -Methode
Diese Methode kopiert das ArrayList -Element in ein neues Array.
4. ArrayList- und Array -Konvertierung
Beispiel 1:
ArrayList List = New ArrayList (); ;
Beispiel 2:
ArrayList List = New ArrayList (); ;
Das obige führt zwei Methoden zur Konvertierung von ArrayList in Array ein
Beispiel 3:
ArrayList List = New ArrayList (); ; / /Korrekte String [] values = (String [])
Anders als Arrays, da sie in Objekt -Arrays konvertiert werden können, wird jedoch keinen Fehler in der ArrayList hinzugefügt. Elemente, ansonsten werden eine Ausnahme, die nicht transformiert werden kann, geworfen.
5. Beste Ratschläge zur Verwendung von ArrayList
In diesem Abschnitt werden wir den Unterschied zwischen ArrayList und Array sowie die Effizienz der ArrayList erörtern
1) ArrayList ist eine komplexe Version von Array
ArrayList umfasst ein Objekt-Array Array -Methode.
2) Der Einfluss des internen Objekttyps
Bei allgemeinen Referenztypen hat dieser Teil keinen großen Einfluss, aber bei Werttypen, das Hinzufügen und Ändern von Elementen in ArrayList führt zu Pack- und Unboxing -Vorgängen, und häufige Vorgänge können sich auf eine gewisse Effizienz auswirken.
Für die meisten Personen verwenden die meisten Anwendungen jedoch Arrays von Werttypen.
Es gibt keine Möglichkeit, diese Wirkung zu beseitigen.
3) Array -Expansion
Dies ist ein Faktor, der einen größeren Einfluss auf die Effizienz von ArrayList hat.
Wenn Sie hinzufügen, addRange, Insertrange und andere Methoden zum Hinzufügen von Elementen ausführen, wird die Kapazität des internen Arrays unzureichend überprüft. Neu im Array, dann sollte das alte Array die Effizienz beeinflussen.
Beispiel 1: Wenn beispielsweise ein Daten mit 200 Elementen dynamisch zu einer ArrayList hinzugefügt wird, die mit der Standardgröße von 16 Elementen erstellt wurde, wird es bestehen:
16*2*2*2 = 256
Vier Erweiterungen erfüllen die endgültigen Anforderungen. Wenn: Wenn:
ArrayList List = New ArrayList (210);
Erstellen Sie eine ArrayList im Weg, reduziert nicht nur die 4-fachen Array-Erstellung und Kopiervorgänge, sondern auch die Speicherverwendung.
Beispiel 2: Eine ArrayList wird mit erwarteten 30 Elementen erstellt:
ArrayList List = New ArrayList (30);
Während des Ausführungsprozesses wird das Array auf die Größe von 60 Elementen erweitert und zu diesem Zeitpunkt keine neuen Elemente hinzugefügt. . Wenn Sie zu diesem Zeitpunkt verwenden, verwenden Sie:
ArrayList List = New ArrayList (40);
Dann ist alles gelöst.
Daher ist die korrekte Schätzung möglicher Elemente und das Aufrufen der delimisierten Methode zu angemessenen Zeiten eine wichtige Möglichkeit, die Effizienz der Verwendung von ArrayList zu verbessern.
4) Rufen Sie häufig Indexof, Enthält und andere Methoden auf (Sortieren, Binarysearch und andere Quadrate
Der durch die Methode verursachte Effizienzverlust ist zuerst optimiert, nicht in dieser Spalte) wir müssen deutlich machen, dass ArrayList ein dynamisches Array ist, das keine Algorithmen enthält, auf die schnell durch Schlüssel oder Wert zugegriffen wird, also tatsächlich. Das Aufrufen von Index, enthält und andere Methoden ist einfach auszuführen. Wertpaare wie Hashtable oder Sortedlist.
ArrayList al = New ArrayList (); al.Add ("How"); Al.Add (300); al.add (1,2); Al.Add (22,8);