Falconbyte unterstüzen
Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.
Thema in Kurzform
- Array und ArrayList werden für die Sammlung von Elementen gleichen Typs verwendet.
- Es gibt zwischen beiden Sammlungsobjekten aber starke Unterschiede in Verwendung und Funktionalität.
- Syntax:
// Array int[] meinArray = new int[5]; // ArrayList ArrayList<Roboter> robots = new ArrayList<>();
Array vs. ArrayList
Sowohl das klassische Array als auch die ArrayList werden verwendet, um Elemente gleichen bzw. ähnlichen Typs in einer Sammlung zu speichern. Der große Vorteil solcher Datenstrukturen ist, dass sich die enthaltenen Elemente gemeinsam verwalten lassen.
Welche Unterschiede zwischen einem Array und einer ArrayList gibt es aber in Java?
1. Implementierung
Das Array gehört zur Basis-Funktionalität in Java und steht dem Programmierer nativ zur Verfügung.
Die ArrayList hingegen zählt zum Collection framework und muss aus der java.util-Bibliothek erst noch importiert werden:
import java.util.ArrayList;
2. Flexibilität
Ein zentraler Unterschied der beiden Sammlungstypen besteht in der Flexibilität ihrer Größe. Eine Array hat eine feste Größe, die bei der Erstellung angegeben wird. Nach der Erstellung eines Arrays, kann sie nicht mehr geändert werden; wenn die Größe falsch kalkuliert wurde, muss ein neues Array erstellt werden.
Die Größe einer ArrayList dagegen ist nicht festgelegt, sondern flexibel. Die Liste wächst somit beim Hinzufügen neuer Elemente einfach an. Man muss sich bei der Erstellung einer ArrayList also keine Gedanken um die Größe machen.
3. Die Klassen
In Java sind Arrays und ArrayListen Objekte. Schon der new-Operator bei der Erstellung beweist dies:
// Array-Objekt erstellen
int[] meinArray = new int[5];
// ArrayList-Objekt erstellen
ArrayList<Roboter> robots = new ArrayList<>();
Es ist klar, dass ArrayList-Objekte von der Klasse ArrayList abgeleitet werden. Doch von welcher Klasse kommen die Array-Objekte?
Tatsächlich handelt es sich bei der für die Erzeugung von Arrays zuständigen Klasse nicht um eine konventionelle (statische) Klasse. Stattdessen wird die Klasse für das Array erst unmittelbar bei der Array-Erzeugung als dynamische Klasse, das heißt zur Laufzeit, generiert. Wir können diese daher in der Klassen-Bibliothek nicht nachschlagen. Diese Klassen sind direkte Unterklassen von Object.
Für jeden Array-Datentyp wird eine solche dynamische Klasse erstellt. Beim Aufruf der Object-Methode getClass() erhalten wir den recht seltsamen Namen dieser Klassen:
int[] meinArray1 = new int[5];
float[] meinArray2 = new float[5];
String[] meinArray3 = new String[5];
System.out.println(meinArray1.getClass()); // class [I
System.out.println(meinArray2.getClass()); // class [F
System.out.println(meinArray3.getClass()); // class [Ljava.lang.String;
4. Funktionalität
Obwohl es sich beim Array um ein Objekt handelt, hat es keine eigenen Methoden. Wir können auf einem Array lediglich die von Object geerbten Methoden sowie die Konstante length aufrufen.
Ganz anders bei der Klasse ArrayList: Diese besitzt als vordefinierte Klasse eine Reihe nützlicher Methoden, mit der wir die ArrayList durchkneten können, zum Beispiel: add(), get(), set(), contains(), size(),removaAll().
5. Datentypen
Ein Array kann Elemente von primitiven Datentypen und Objekttypen aufnehmen.
Einer ArrayList dagegen können wir Elemente nur von Objekttypen zuweisen. Wenn wir dennoch eine ArrayList mit einfachen Datentypen bilden wollen, müssen wir auf die Wrapper-Klassen zurückgreifen.
6. Multi-Dimensionalität
Ein weiterer wichtiger Unterschied zwischen einem Array und einer ArrayList ist der Umstand, dass ein Array mehrdimensional sein kann. Dies ermöglicht es uns, hoch-komplexe Datenstrukturen zu erzeugen (zB. benötigt ein Schachspiel ein zweidimensionales Array).
ArrayListen hingegen können nur eindimensional sein. Das überrascht uns nicht, da ja "Listen" immer linear sind.
Mehr zum Thema Arrays und ArrayListen können Sie in diesem Artikel erfahren.