Welche Container-Typen
kennen wir?
Gibt es auch Nachteile?
⚠️ Größen sind statisch
Listen vs. Arrays
live
LinkedList<Klasse> bezeichner = new LinkedList<Klasse*>();
* Klassen ist hier (rechts vom =) optional
Wichtig: für Klasse dürfen keine primitiven Datentypen (u.a. int, double) verwendet werden.
boolean add(E e): Fügt ein Element e vom Typ E hinzuvoid add(int index, E e): Fügt Element an Stelle index einE get(int index): Liefert das Element an der Position index
Rückgabe: Element (vom Typ E) int size(): Gibt die Anzahl der Elemente zurückE remove(int index): Entfernt das Element an Stelle index
E)boolean remove(E e): Entfernt erstes Vorkommen von Element e boolean contains(E e): Prüft, ob ein Element e existiertisEmpty(): Prüft, ob die Liste leer istvoid clear(): Löscht alle Elemente der Liste* Klassen ist hier (rechts vom =) optional
Wichtig: für Klasse dürfen keine primitiven Datentypen (u.a. int, double) verwendet werden.
ArrayList<Klassen> bezeichner = new ArrayList<Klasse*>();
Unterschied zu Arrays:
automatische Anpassung der Größe (inkl. Kopieren)
ArrayList<String> persons = new ArrayList<>();
persons.add("Maria");
persons.add("Johannes");
println(persons.get(0));live
LinkedList<String> persons;
persons = new LinkedList<>();
persons.add("Maria");
persons.add("Johannes");
println(persons.get(0));...
| ArrayList | LinkedList | |
|---|---|---|
| Zugriff auf Element | ↑ | ↓ |
| Einfügen / Löschen | ↓ | ↑ |
| Speicherbedarf | ↑ | ↓ |
| Eignung | häufige wahlfreie Zugriffe | viele dynamische Änderungen |
Beide Strukturen haben ihre Daseinsberechtigung in Java.
Je nach Einsatz müssen Eigenschaften abgewogen werden.