implementiert das Set interface
hat einen Typparameter
// ...
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
// ...
implementiert das Map interface
hat zwei Typparameter
// ...
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
// ...
Eine Hashfunktion bildet aus einer großen Menge von Daten eine geringere Menge von Daten ab.
Eine Hashkollision tritt auf, wenn zwei unterschiedliche Eingabedaten denselben Hashwert erzeugen.
Name | Summe | Hash |
---|---|---|
Steffen | 715 | 3 |
Mirco | 506 | 2 |
Marianna | 807 | 3 |
Einwegfunktion, Deterministisch, Kollisionsbehaftet
HashSet und HashMap verwenden die Methoden hashCode und equals
Ein Record ist eine Datenklasse, deren Attribute nicht verändert werden können.
Eine Datenklasse hat somit finale Attribute und Getter.
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;
}
// ...
// ...
public int getAge() {
return age;
}
// weitere Methoden siehe Doku
}
public record Dog(String name, int age) {}
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.