06_CollectionTypes

Code-Dateien

DateinameAktion
CODECode_Fahrzeug.zipDownload
CODECode_Student.zipDownload
CODECode_Vornamen.zipDownload

PDF-Dokumente

DateinameAktion
PDFFolie_Student.pdfÖffnen

Videos

DateinameAktion
VIDEOVideo_1_VornamenAbspielen
VIDEOVideo_2_StudentAbspielen
VIDEOVideo_Fahrzeug_DAbspielen

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

    001.png

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

    002.png

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);
    }
003.png

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, LinkedList

  • Set: HashSet, LinkedHashSet, TreeSet

  • Map: 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)

004.png

👉 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)

005.png

👉 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

    006.png

Speicherung

👉 Hash → schnell, ungeordnet
👉 Tree → sortiert, etwas langsamer
👉 Array → schneller Zugriff per Index
👉 Linked → schnelles Einfügen/Löschen