Comment utiliser Sets comme clés dans Java Maps

J'ai une Carte qui utilise un Ensemble pour le type de clé, comme ceci:

Map<Set<Thing>, Val> map;

Quand j'ai une requête de la carte.containsKey(myBunchOfThings), elle retourne false, et je ne comprends pas pourquoi. Je peut itérer sur chaque touche du clavier et vérifier qu'il y a une clé (1) a le même hashCode, et (2) est égal à() à 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.
  }
}

Dois-je simplement fondamentalement mal compris le contrat pour containsKey? Est-il un secret à l'aide des ensembles (ou, plus généralement, des collections) que des clés, des cartes?

source d'informationauteur Gabe Johnson