Vorlesungsmitschrieb

Werbung
1:n-Beziehungen
Wiederholung
HashSet
Mit Hilfe des HashCodes wird der Index im Array gesucht, an den das neue Objekt eingefügt werden
soll.
Einfügen
Wenn dieser Platz frei ist, wird das Objekt eingefügt. Wenn dieser Platz bereits belegt ist, prüft man,
ob es das gleiche Objekt ist. Falls ja, muss nichts weiter getan werden. Falls anderes Objekt auf dem
Platz sitzt (das nennt man eine Kollision), muss eine Kollisionsbehandlung durchgeführt werden.
Es gibt zwei Formen der Kollisionsbehandlung:
1. Mit linearer Liste („auf den Schoß setzen“)
2. Mit einer sog. Sondierungsfunktion einen freien Platz suchen. Beim Suchen muss die gleiche
Sondierungsfunktion verwendet werden. Beispiel für Sondierungsfunktionen wäre
a. Einfach nächsten freien Platz suchen, ggf. vorne in Array wieder beginnen.
b. Kubische oder exponentielle Sondierungsfunktionen: Man sucht auf jedem 2^n-ten
Platz, ob dieser frei ist.
Suchen
Wenn geprüft werden soll, ob ein Objekt bereits im HashSet enthalten ist, geht man wie folgt vor:
1. Objekt nach HashCode fragen.
2. Auf Index = HashCode schauen, ob Platz belegt ist.
a. Falls nein: Objekt nicht vorhanden
b. Falls ja: Prüfen, ob Objekt das gleich ist (equals)
i. Falls equals == true: Objekt ist vorhanden
ii. Falls equals != true: Mit gleicher Sondierungsfunktion suchen, bis
1. Entweder man das Objekte gefunden hat (equals == true): Objekt
vorhanden
2. Oder man einmal durchs Array durchgelaufen ist: Objekt nicht
vorhanden.
Arbeiten mit dem Java Collection Framework
Mit Collections
Beispiel Sorted Set
Immer, wenn man mit SortedSets (oder SortedMaps) arbeitet, müssen die eingefügten Objekte das
Interface „Comparable“ und damit die compareTo()-Methode implementieren
Der Rückgabewerte der compareTo()-Methode kann kleiner 0 sein (dann wird das Objekt vorher
einsortiert) oder gleich 0 oder größer 0 (Objekt wird danach einsortiert).
compareTo-Methode bei Strings:
Mit Maps
Maps sind sog. Assoziativspeicher, bei denen Werte unter einem (eindeutigen) Schlüssel gespeichert
und über diesen wieder geholt werden können.
Die API von Maps unterscheidet sich von der der Collections. Beispielsweise heißt die HinzufügeMethode put(Schlüssel, Wert) statt add(Wert).
Mit map.values() bekommt man alle Werte („rechte Spalte“) als Collection, mit map.keySet() alle
Schlüssel als Set.
Herunterladen