Wie zu verwenden-Sets als Schlüssel in Java-Maps

Habe ich eine Karte, die verwendet eine Reihe für den Schlüssel geben, wie diese:

Map<Set<Thing>, Val> map;

Wenn ich die Abfrage anzeigen.containsKey(myBunchOfThings), gibt false zurück, und ich verstehe nicht, warum. Ich kann Durchlaufen und jeden Schlüssel in das keyset und stellen Sie sicher, es ist ein Schlüssel, der (1) den gleichen hashCode, und (2) gleich() 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.
  }
}

Kann ich nur grundlegend missverstehen der Vertrag für containsKey? Ist es ein Geheimnis, um die Verwendung von sets (oder allgemein, Sammlungen) als Schlüssel zu den Karten?

InformationsquelleAutor der Frage Gabe Johnson | 2010-03-06

Schreibe einen Kommentar