Jetzt anmelden...

Login
Passwort
Registrieren

JAVA Blog

Unterschied zwischen Array und ArrayList

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

Kommentare [0] 69 Views

Stefan 15.08.2020

Infos zum Artikel

Kategorie Java
Autor Marc Anton
Datum 26.08.2020

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.

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.

Bereits die Syntax der beiden Sammlungstypen ist schon ganz unterschiedlich, was nicht nur die Verwendung der eckigen Klammern beim Array bzw. den spitzen Klammern der Generics bei der ArrayList betrifft.

Welche tiefergehenden Unterschiede zwischen einem Array und einer ArrayList in Java gibt es darüber hinaus?

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 Klasse

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

Nur angemeldete und aktivierte Benutzer können kommentieren.

Alle Kommentare

Es gibt bislang noch keine Kommentare zu diesem Thema.

Einstieg Objektorientierung

Lernen Sie die Grundlagen der Objektorientierung

Vererbung einfach erklärt

Lernen Sie die Grundlagen der Vererbung in Java

Statische Elemente

Statische Variablen und Methoden nutzen

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2020 Stefan E. Heller

Impressum | Datenschutz

facebook programmieren lernen twitter programmieren lernen youtube programmieren lernen