Listen
Die Java API stellt unter Anderem die Schnittstelle List<E>
sowie die Klassen
ArrayList<E>
, LinkedList<E>
und Arrays
zur Verfügung, mit deren Hilfe
Listen realisiert werden. Unter einer Liste versteht man eine geordnete Folge
von Elementen, die auch doppelt enthalten sein können. Der Zugriff auf die
Elemente erfolgt über den Index oder sequentiell.
- Unveränderbare Listen
- Veränderbare Listen fixer Größe
- Veränderbare Listen dynamischer Größe
Die Schnittstelle List<E>
bietet verschiedene Fabrikmethoden zum Erzeugen
unveränderbarer Listen. Unveränderbar bedeutet, dass weder die Liste selbst noch
ihre Elemente geändert werden können.
public class MainClass {
public static void main(String[] args) {
List<String> list = List.of("Hans", "Peter", "Lisa");
System.out.println(list.size());
System.out.println(list.get(0));
list.set(0, "Max"); // Laufzeitfehler
list.add("Heidi"); // Laufzeitfehler
list.remove(0); // Laufzeitfehler
}
}
Fabrikmethoden sind Methoden, die Objekte erzeugen.
Die Klasse Arrays
stellt neben Methoden zum Sortieren und Durchsuchen von
Feldern auch eine Methode zum Erzeugen veränderbarer Listen fixer Größe zur
Verfügung.
public class MainClass {
public static void main(String[] args) {
List<String> list = Arrays.asList("Hans", "Peter", "Lisa");
System.out.println(list.size());
System.out.println(list.get(0));
list.set(0, "Max");
list.add("Heidi"); // Laufzeitfehler
list.remove(0); // Laufzeitfehler
}
}
Die Klasse ArrayList<E>
stellt eine veränderbare Liste dynamischer Größe auf
Basis eine Feldes dar, die Klasse LinkedList<E>
eine veränderbare Liste
dynamischer Größe auf Basis doppelt verketteter Elemente.
public class MainClass {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // = new LinkedList<>();
list.add("Hans");
list.add("Peter");
list.add("Lisa");
System.out.println(list.size());
System.out.println(list.get(0));
list.set(0, "Max");
list.add("Heidi");
list.remove(0);
}
}
Eine feldbasierte Liste ist bei wahlfreiem Zugriff schneller als eine verkettete Liste; eine verkettete Liste ist bei Anfüge- und Löschoperationen (insbesondere bei großen Elementzahlen) schneller als eine feldbasierte Liste.