List
java.util.List
Listen sind geordnete Collections, denn sie enthalten beliebige Objekte in einer bestimmten Reihenfolge. In Listen werden eine Menge von Elemente (genauer genommen Referenzen auf Objekte) abgespeichert, wobei die Menge geordnet ist, da jedes Element an einer bestimmten Position zu finden ist:
Beachte, dass wir bei den Listen, die Indexierung der Positionen bei 0 beginnt, genauso wie bei dem primitiven Datentyp Array.
Listen haben eine dynamische Grösse, d.h. die Grösse der Liste muss bei der Erstellung nicht bekannt sein und die Anzahl der enthaltenen Elemente kann sich während der Laufzeit ändern. Daher ist es möglich, fortlaufend Elemente zur Liste hinzuzufügen oder aus der Liste zu entfernen. Hierbei entstehen nie Lücken: Fügt man ein Element an einer bestimmten Position zur Liste hinzu, dann rutschen alle nachfolgenden Elemente eine Position nach. Entfernt man ein Element an einer bestimmten Position, so rutschen alle nachfolgen Elemente eine Position nach oben.
Man kann auf Elemente über ihren ganzzahligen Index (Position in der Liste) zugreifen und nach Elementen in der Liste suchen.
Ein Element aus einer Liste entfernen:
Wie zu Beginn erwähnt, enthalten Lists Referenzen auf Objekte. Deshalb ist es nicht möglich, Listen zu erstellen, welche
primitive Datentypen als Elemente enthalten (int
, double
, boolean
, char
, ...
). Dafür müssen die sogenannten
Wrapper-Klassen verwendet werden. Wrapper-Klassen bieten eine Möglichkeit, primitive Datentypen (int, double, boolean,
char, …) als Objekte zu verwenden:
java.lang.Integer, java.lang.Double, java.lang.Boolean, java.lang.Character,..
Schauen wir uns die folgenden Beispiele an, wo wir einer Liste mit Elementen vom Typ Integer das Element 3 hinzufügen:
|
|
Oben haben wir der Liste das Integer-Objekt 3 hinzugefügt - also ein Integer
-Objekt und nicht der Wert des primitiven Datentyps int
.
|
|
Beim unteren Beispiel haben wir der Liste den int-Wert 3 als primitiven Datentyp hinzu.
Obwohl wir den int-Wert 3 als primitiver Datentypen und nicht als Integer-Objekte zur Liste
integerList
hinzufügen, kompiliert dieser Code genau so ohne Fehler.
integerList
ist jedoch eine Liste von Integer-Objekten und nicht eine Liste von int-Werten.
Warum haben wir dann beim Kompilieren dieses Codes kein gekriegt?
Der Copmiler konvertiert den int-Wert zu einem Integer-Objekt und fügt dieses dann zur Liste integerList hinzu.
Diese Konvertierung nennt man Autoboxing.
Autoboxing ist die automatische Konvertierung zwischen den primitiven Datentypen zu Objekten ihrer entsprechenden Wrapper-Klassen, die der Java Compiler durchführt
(beispielsweise int
zu Integer
, double
zu Double
, ect.).
Wenn die Konvertierung in die andere Richtung erfolgt, nennt man dies Unboxing
.
Somit ist es nicht mehr nötig, dass wir dieses Autoboxing wie im ersten Beispiel selber durchführen müssen.
Einige Methoden vom Interface java.util.List
|
|
Das Interface java.util.List
im Collection Framework ist der Datentyp der Listen, wobei in der abstrakten Klasse
java.util.AbstractList
die grundlegenden Funktionalitäten implementiert sind, sodass diese den verschiedenen konkreten
Listen-Implementierungen weiter geerbt werden können.
Auf der nächsten Seite geht es mit einer konkreten Umsetzung einer List
weiter. Nun wird es also praktischer!