06_CollectionTypes
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Fahrzeug.zip | Download |
| CODECode_Student.zip | Download |
| CODECode_Vornamen.zip | Download |
PDF-Dokumente
| Dateiname | Aktion |
|---|---|
| PDFFolie_Student.pdf | Öffnen |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_1_Vornamen | Abspielen |
| VIDEOVideo_2_Student | Abspielen |
| VIDEOVideo_Fahrzeug_D | Abspielen |
Lernmaterialien
Collections
ArrayList besteht
Array… wie wird es gespeichert (interne Struktur)List… was kann gespeichert werden
Was
List
Eine List ist eine geordnete Sammlung
von Elementen.
Eigenschaften:
Elemente haben eine feste Reihenfolge
auf Elemente kann man über einen Index zugreifen
Duplikate sind erlaubt
Typische Verwendung:
wenn die Reihenfolge wichtig ist
wenn ein Wert mehrfach vorkommen darf
Set
Ein Set ist eine Sammlung von
eindeutigen Elementen - Mengenlehre.
Eigenschaften:
keine Duplikate
kein Zugriff per Index
Reihenfolge kann nicht vorgegeben werden
Beispiel:
private HashSet<Fenster> fenster;
public Haus() {
fenster = new HashSet<>();
}
public void addFenster(Fenster welches) throws FensterException {
if (welches == null)
throw new FensterException("Fehler: kein Fenster!");
if (welches.getHaus() != null)
throw new FensterException("Fehler: schon veraut!");
fenster.add(welches);
welches.setHaus(this);
}Map
Eine Map speichert
Schlüssel-Wert-Paare.
Eigenschaften:
jeder Key ist eindeutig
über den Key greift man auf den Value zu
Beispiel:
private HashMap<String, Fenster> fenster;
public Haus() {
fenster = new HashMap<>();
}
public void addFenster(Fenster welches) throws FensterException {
if (welches == null)
throw new FensterException("Fehler: kein Fenster!");
if (welches.getHaus() != null)
throw new FensterException("Fehler: schon veraut!");
fenster.put(welches.getMaterial(), welches);
welches.setHaus(this);
}
Kurzvergleich
| Typ | Ordnung | Duplikate | Zugriff |
|---|---|---|---|
List |
ja | ja | über Index |
Set |
je nach Implementierung | nein | kein Index |
Map |
je nach Implementierung | Keys nein, Values ja | über Schlüssel |
Häufige Implementierungen
List:ArrayList,LinkedListSet:HashSet,LinkedHashSet,TreeSetMap:HashMap,LinkedHashMap,TreeMap
👉 ArrayList
- basiert auf einem dynamischen Array
Eigenschaften:
schneller Zugriff:
O(1)(Index)Einfügen/Löschen in der Mitte: teuer
O(n)
ArrayList<String> list = new ArrayList<>();👉 Intern:
[Anna][Ben][Clara][null][null]
(Größe wird automatisch vergrößert)
👉 LinkedList
- basiert auf einer doppelt verketteten Liste
LinkedList<String> list = new LinkedList<>();👉 Intern:
[Anna] <-> [Ben] <-> [Clara]
Eigenschaften:
schnelles Einfügen/Löschen:
O(1)langsamer Zugriff:
O(n)
👉 HashSet
- basiert auf einer Hash-Tabelle (eigentlich HashMap)
HashSet<String> set = new HashSet<>();👉 Intern:
Hash("Anna") → Bucket 3
Hash("Ben") → Bucket 7
Eigenschaften:
keine Duplikate (über
hashCode()+equals())Zugriff sehr schnell: Ø
O(1)keine Ordnung
Speicherung
👉 Hash → schnell, ungeordnet
👉 Tree → sortiert, etwas langsamer
👉 Array → schneller Zugriff per Index
👉 Linked → schnelles Einfügen/Löschen