Array vs. ArrayList in Java

Was der Unterschied zwischen Array und ArrayList ist, ist die häufig gestellte Frage im Java-Interview und für Anfänger, die Java-Programmierung lernen. Ich habe mit dem Schreiben der Java-Best-Practices-Reihe begonnen. Dies ist einer der Beiträge, um Missverständnisse über die beliebten Java-Klassen Array und ArrayList auszuräumen.

Array vs. ArrayList

Array vs. ArrayList

1. Flexibler Speicher

Einer der Hauptunterschiede zwischen Array und ArrayList besteht darin, dass Array eine feste Länge hat und nach der Initialisierung nicht mehr erweitert werden kann. Hier ist das einfache Konstrukt zum Initialisieren der Arrays, das ich dem Java Arrays-Beispiel entnommen habe:

int weight[ ]= new int[5];
weight[0]=36;
weight[1]=42;
weight[2]=24;
weight[3]=10;
weight[4]=50;

Wenn Sie sich das obige Beispiel ansehen, handelt es sich um eine Array-Variable weight Wird mit der Länge 5 initialisiert, kann es nicht mehr als 5 Elemente aufnehmen.
Während ArrayList die Größe dynamisch erhöhen kann, wenn neue Elemente hinzugefügt werden. Schauen Sie sich den folgenden Code an:

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

Wenn Sie das obige Objekt erstellen, wird intern die Standardgröße von 10 für die Speicherung der Werte zugewiesen. Wenn Sie jedoch das elfte Element hinzufügen, wird die ArrayList-Größe auf weitere 10 Elemente erweitert. Dies wirkt sich auf die Leistung Ihrer Programmierung aus, wenn diese um ein Vielfaches gesteigert werden muss, um mehr Elemente unterzubringen.

2. Generika

Arrays können die in Java 5 eingeführte Generics-Programmierung nicht verwenden. Das Array kennt den Typ, den es enthalten kann, andernfalls wird es ausgelöst ArrayStoreException wenn Sie versuchen, den falschen Datentyp zu speichern.

Während einer der großen Vorteile der Sammlungsprogrammierung darin besteht, die Generika zur Angabe des Typs der Objekte zu verwenden ArrayList kann speichern. Dies bietet die Typsicherheit für Ihren Code zur Kompilierungszeit selbst.

3. Länge / Größe

Arrays stellen die Methode bereit length für den Zugriff auf die Größe eines Arrays. Auch wenn Sie keine Elemente im Array gespeichert haben, gibt diese Methode immer die Kapazität des Arrays zurück.

ArrayList oder eine andere Sammlungs-API, die die List-Schnittstelle implementiert, definiert die Methode size Zugriff auf die Größe des Objekts. Beachten Sie, dass size Die Methode von ArrayList gibt nur die Anzahl der aktuell gespeicherten Elemente zurück, um zu wissen, auf welche maximalen Elemente in der ArrayList mit der Methode zugegriffen werden kann capacity.

4. Primitive und Objekte

Arrays können entweder für Grundelemente oder Objekte erstellt werden. Es kann sowohl primitive Typen als auch Objekte speichern.

ArrayList kann nur die Objekte enthalten, die das verwenden add Methode. Obwohl Sie seit der Java 5-Version die primitiven Typen in einer ArrayList speichern, wird der primitive Wert stillschweigend in die entsprechende Wrapper-Klasse konvertiert (Autoboxing in Java 5) und gespeichert. Alle Sammlungs-APIs unterstützen nur das Speichern der Objekte und nicht der Grundwerte.

5. Iterator

Einer der größten Vorteile der Speicherung der Objekte in der Sammlungs-API ist die Verwendung eines Iterators zum Iterieren der Elemente. Diese Funktion ist jedoch bei den Arrays nicht verfügbar. Wir müssen die manuelle Iteration mithilfe von for-Schleifen- oder while-Schleifenkonstrukten durchführen.

6. Leistung

Hinsichtlich der Leistung gibt es keinen Unterschied zwischen den Klassen Array und ArrayList. Beide bieten die gleiche Leistung beim Ein- und Auslagern der Objekte. Wenn Sie Tausende von Objekten in Ihrer Anwendung speichern, können Sie den Leistungsunterschied zwischen Array und ArrayList messen. ArrayList verwendet intern das Array zum Speichern der Objekte.

Wenn Sie die resize()-Operation oder die automatische Größenänderung der ArrayList ausführen, wirkt sich dies auf die Leistung aus.

Beste Übung

Die Empfehlung ist nur meine Meinung und nicht als universelle Best Practice für die Verwendung von Array vs. ArrayList in Ihren Projekten zu verstehen. Ich würde empfehlen, die ArrayList überall zu verwenden, da sie viel Flexibilität beim Speichern der Objekte bietet. Wenn Sie Thread-Sicherheit wünschen, wählen Sie Vector anstelle von ArrayList.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen