ich eine Karte haben, die ein Set für den Schlüsseltyp verwendet, wie folgt aus:Wie Sets als Schlüssel in Java Karten verwenden
Map<Set<Thing>, Val> map;
Als ich map.containsKey (myBunchOfThings) abfragen, gibt es falsch ist, und Ich verstehe nicht warum. Ich kann durch jeden Schlüssel im Schlüsselsatz iterieren und verifizieren, dass es einen Schlüssel gibt, der (1) denselben hashCode hat, und (2) ist gleich() zu myBunchOfThings.
System.out.println(map.containsKey(myBunchOfThings)); // false.
for (Set<Thing> k : map.keySet()) {
if (k.hashCode() == myBunchOfThings.hashCode() && k.equals(myBunchOfThings) {
System.out.println("Fail at life."); // it prints this.
}
}
Verstehe ich den Vertrag für containsKey nur grundlegend falsch? Gibt es ein Geheimnis, Sets (oder allgemeiner Sammlungen) als Schlüssel für Maps zu verwenden?
Sie haben genau richtig mit der unspezifizierten Sache. Ich nehme an, dass ich eine Art baumartige Lookup-Struktur implementieren muss, wo Knoten sowohl Werte als auch Kinder haben. –