Jetzt anmelden...

Login
Passwort
Registrieren
26.08.20 3787 Views Kommentare [0] 2 0

credit: ©Markus Pirker

JAVA Blog

Unterschied zwischen Array und ArrayList

Was ist der Unterschied zwischen einem Array und einer ArrayList? Obwohl beides Sammlungslisten sind, werden sie doch ganz unterschiedlich verwendet. Sehen wir uns das nun genauer an.

Download als eBook

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.

Falconbyte unterstützen

Kommentar schreiben

Alle Kommentare

Es gibt bislang noch keine Kommentare zu diesem Thema.

Operatoren einsetzen

Es gibt eine Vielzahl an Operatoren. Wir haben eine Übersicht erstellt

Objektsammlungen

Lernen Sie in diesem Kapitel, wie Sie eine Sammlung von Objekten erstellen können.

Konstruktoren bei Vererbung

Trainieren Sie ihre Konstruktoren-Skills

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2021 Stefan E. Heller

Impressum | Datenschutz

Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen