Vertiefung der Programmierung

Listen

Wiederholung
Welche Container-Typen
kennen wir?

Arrays
- sind fester Bestandteil von Java
- Elemente können sein:
- alle primitiven Typen (int, double usw.)
- eigene Typen (Klassen)
Gibt es auch Nachteile?
⚠️ Größen sind statisch
- kein Vergrößern/Verkleinern zur Laufzeit
⌨️ Beispiel Buch (Komposition)
Listen in Java

Listen vs. Arrays
live

Definition: LinkedList
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.
Wichtige Methoden (der Liste)
boolean add(E e): Fügt ein Elementevom TypEhinzuvoid add(int index, E e): Fügt Element an Stelle index einE get(int index): Liefert das Element an der PositionindexRückgabe: Element (vom TypE)
intsize(): Gibt die Anzahl der Elemente zurückEremove(int index): Entfernt das Element an Stelleindex- Rückgabe: das gelöschte Element (vom Typ
E)
- Rückgabe: das gelöschte Element (vom Typ
booleanremove(E e): Entfernt erstes Vorkommen von Elementebooleancontains(E e): Prüft, ob ein Elementeexistiert- boolean
isEmpty(): Prüft, ob die Liste leer ist voidclear(): Löscht alle Elemente der Liste
⌨️ Wichtige Methoden (der Liste)
Definition: ArrayList
* 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*>();
ArrayList
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));- verhält sich im Speicher ähnlich wie Arrays
- Methoden erlauben einfachen Zugriff auf Elemente
- Hinzufügen
- Entfernen
- Alle löschen
- schneller Zugriff auf Elemente (wahlfreier Zugriff)
- ggf. langsam bei vielen Änderungen → häufiges Kopieren
live
LinkedList
LinkedList<String> persons;
persons = new LinkedList<>();
persons.add("Maria");
persons.add("Johannes");
println(persons.get(0));- Elemente sind untereinander verknüpft
- es gibt Zeiger auf:
- vorhergehendes Element
- nachfolgendes Element
- ℹ️ erfordert mehr Speicherplatz
- es gibt Zeiger auf:
- Zugriff auf Elemente langsamer
- schnell bei vielen Änderungen
...
LinkedList vs. ArrayList
| 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.
⌨️ Beispiel
⌨️ Buch: Buchseiten als Liste (Komposition)
✅ Zusammenfassung
- Der Container-Typ List
- variable Größe
- dynamisch Elemente hinzufügen/entfernen
- Einsatz bei Objektbeziehungen (Aggregation, usw.)
- gut geeignet für Multiplizitäten 0..*, 1..*
- Unterschiede:
- Array vs. List
- ArrayList vs. LinkedList


Listen
By blackbill
Listen
- 229