J'ai plusieurs ensembles qui stockent les objets de la même classe, mais je veux spécifier une fonction d'identité différente pour chacun d'entre eux (par exemple, dans un ensemble A == B si Axe == Bx, tandis que dans un autre A == B si Ay == By).Définition de plusieurs fonctions de hachage pour le même objet
Actuellement j'utilise TreeSets avec différents comparateurs définis pour chacun. Je me demande comment la même chose peut être faite si je veux passer à HashSets. Java ne permet pas de passer une fonction de hachage séparée de la même manière que les comparaisons pour les collections triées/arborescentes. La seule façon de le faire serait de créer une classe wrapper différente et d'implémenter la méthode hashCode() dans chacun des éléments de chaque HashSet. Existe-t-il une meilleure façon de le faire?
Vous pouvez implémenter les sous-classes en tant que classes internes privées et fournir une méthode usine pour obtenir la sémantique d'égalité souhaitée. Ceci encapsule complètement le choix – Andrew