Agenda

  • Set
  • Map
  • Hashes
  • Records

Set

Konzept

  • Set ist ein Interface
  • Realisiert eine Menge
  • Vereinigung (Union)
  • Durchschnitt (Intersection)
  • Differenz (Difference)

HashSet- Klasse

implementiert das Set interface

hat einen Typparameter

Demo - HashSet

  • Mengen erstellen (1-4) und (2,3,5)
  • Vereinigung (Union)
  • Durchschnitt (Intersection)
  • Differenz (Difference)

Methoden eines Sets

// ...
  Set<Integer> numbers = new HashSet<>();
  Set<Integer> otherNumbers = new HashSet<>();
  numbers.add(4545); // add entry
  numbers.remove(4545); // remove entry
  numbers.clear(); // remove all entries
  numbers.size(); // number of entries
  students.contains(4545); // entry exists
  students.addAll(otherNumbers); // union
  students.retainAll(otherNumbers); // intersection
  students.removeAll(otherNumbers); // difference
// ...

Map

Konzept

  • Map ist ein Interface
  • Realisiert ein Schlüssel-Wert-Paar
  • Keine doppelten Schlüssel möglich
  • Existiert ein Schlüssel oder Wert
  • Alle Schlüssel, Werte oder Schlüssel-Wert-Paare

Beispiele Schlüssel-Wert-Paare

  • Studentendaten → MatrikelNummer, Student
  • Produktinventar → Produkt, Anzahl
  • StadtInfos → Stadtname, CityInfo
  • Hauptstädte → Land, Hauptstadt

HashMap- Klasse

implementiert das Map interface

hat zwei Typparameter

Demo - HashMap

  • Map erstellen (Matrikelnummer/Note)
  • Hinzufügen und Löschen von Noten

Methoden einer Map

// ...
  Student steffen = new Student("Steffen");
  Map<Integer, Student> students = new HashMap<>();
  students.put(4545, steffen); // add entry
  students.get(4545); // get entry
  students.remove(4545); // remove entry
  students.clear(); // remove all entries
  students.size(); // number of entries
  students.containsKey(4545); // key exists
  students.containsValue(steffen); // value exists
  students.keySet(); // get all keys as Set
  students.values(); // get all values as Collection
  students.entrySet(); // get all entries as Set
// ...

Hashes

Demo - Hashmap Dog Inventory

  • ein Hund und deren Besitzer
  • Besitzer des Hundes ändern

Was ist ein Hash(wert)?

  • Ergebnis einer Hashfunktion

Was ist eine Hashfunktion?

Eine Hashfunktion bildet aus einer großen Menge von Daten eine geringere Menge von Daten ab.

Eigenschaften einer Hashfunktion

  • Einwegsfunktion
  • Deterministisch
  • Kollisionsbehaftet

Was sind Hashkollisionen?

Eine Hashkollision tritt auf, wenn zwei unterschiedliche Eingabedaten denselben Hashwert erzeugen.

Beispiel Hashfunktion

NameSummeHash
Steffen7153
Mirco5062
Marianna8073

Einwegfunktion, Deterministisch, Kollisionsbehaftet

Zusammenfassung Hash

  • Reduktion auf einen Wert
  • Kollisionen

funktionsweise der put-Methode einer HashMap

  1. Hashwert des Schlüssels berechnen → Index
  2. falls kein Wert an diesem Index → Einfügen
  3. falls Wert an diesem Index → Werte vergleichen
  4. falls Werte gleich → Wert ersetzen
  5. falls Werte ungleich → Speicher vergrößern

Die Klasse Object

  • hashCode
  • equals
  • toString

HashSet und HashMap verwenden die Methoden hashCode und equals

Demo - HashCode und Equals

  • hashCode überschreiben und loggen
  • equals überschreiben und loggen
  • alle Fälle erzeugen
  • hashCode implementieren
  • equals implementieren

Records

Records

Ein Record ist eine Datenklasse, deren Attribute nicht verändert werden können.

Eine Datenklasse hat somit finale Attribute und Getter.

Beispiel Datenklasse Dog I

public class Dog {
 final String name;
 final int age;

 public Dog(String name, int age) {
  this.name = name;
  this.age = age;
 }

 public String getName() {
  return name;
 }
// ...

Beispiel Datenklasse Dog II

// ...
 public int getAge() {
  return age;
 }
// weitere Methoden siehe Doku
}

Beispiel Record Dog

public record Dog(String name, int age) {}

Record

Da ein Record von der Record-Klasse erbt, kann nicht von einer anderen Klasse geerbt werden.

Ein Record kann jedoch weitere Methoden haben und beliebig viele Schnittstellen implementieren.

Record - Gratis Methoden

  • Konstruktor
  • Getter
  • Equals
  • hashCode
  • toString

Demo - Record vs Class

  • Cat Klasse → Cat Record
  • equals
  • toString
  • height - weiteres Attribut
  • isOld - weitere Methode
  • HashMap - Cat Inventory

Rest of the Day

  • Generics
  • Maps
  • Records