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.