Ich möchte einen Wert basierend auf einem Schlüssel speichern, der sich aus einem Satz von Elementen zusammensetzt. So etwas wie das Beispiel unten. Natürlich weiß ich, dass mein Pseudo-Beispiel nicht funktionieren würde, da der Hash des Objekts wahrscheinlich seine Adresse sein wird, die für jede neue Instanz unabhängig von ihrem Inhalt eindeutig ist.
%Vor% Natürlich kann ich die SET-Werte einfach als String mit einem Trennzeichen sortieren und verketten und das in einer HashMap<String, String>
-Struktur verwenden, aber das fühlt sich einfach nicht richtig an. Ich bin ziemlich neu in der Java-Programmierung, also könnte es eine offensichtliche Lösung geben, die ich vermisse.
Wenn Sie HashSet<Integer>
anstelle Ihrer benutzerdefinierten SET verwenden (ich gehe davon aus, dass es eine benutzerdefinierte Klasse ist), würde es gut funktionieren, da HashSet
hashCode
und equals
überschreibt (um genau zu sein, HashSet
erweitert AbstractSet
, was diese Methoden überschreibt), so dass es als Schlüssel in einem HashMap
dienen kann.
Wenn Sie jedoch ein Set ändern, das als Schlüssel in Ihrer Map dient, können Sie diesen Schlüssel später in der Map nicht finden. Dieses Risiko besteht, wenn Sie veränderbare Objekte als Schlüssel in einer HashMap verwenden.
%Vor% Dies gibt w00t
aus.
Erstellen Sie eine Auflistungsklasse, und überschreiben Sie hashcode () so, dass derselbe Hashcode für verschiedene Auflistungsinstanzen mit demselben Inhalt zurückgegeben wird. Sie können die Methode in einer Klasse überschreiben, die von Ihrer gewünschten Sammlung stammt. Sie müssen auch gleich (Objekt o) neu implementieren.
Sie haben der Karte kein Set b
hinzugefügt. Fügen Sie zunächst beide Mengen hinzu und versuchen Sie, den Wert b
mit dem Wert zu verknüpfen.
Tags und Links java