Java a un Comparator<T>
pour fournir la comparaison des objets externes à la classe elle-même, pour permettre des méthodes multiples/alternatives de faire ordonnées comparaisons.Java: classe externe pour déterminer l'équivalence?
Mais la seule façon standard de faire des comparaisons désordonnées est de passer outre equals()
au sein une classe.
Que dois-je faire lorsque je souhaite fournir des comparaisons multiples/alternatives non ordonnées externes à une classe? (cas d'utilisation Obvious est le partitionnement d'une collection en classes d'équivalence en fonction des propriétés particulières.)
En supposant l'utilisation finale est pour le contrôle non ordonnée (par exemple, pas pour le tri ou l'indexation), est-il toujours OK pour mettre en œuvre Comparator<T>
qui vérifie juste pour égalité, renvoyant 0 si deux objets sont égaux, et une valeur! = 0 lorsque deux objets sont inégaux? (note:. La seule raison pour laquelle je ne saute pas sur cette solution, est que, techniquement, il peut rompre le contrat pour Comparator
en ne fournissant pas une relation qui satisfait transitivité et de symétrie)
Il semble qu'il y aurait dû y avoir une classe standard EqualsComparator<T>
ou quelque chose.
(Est-Goyave gérer quelque chose comme ça?)
hmmm ... les deux sont tagués @Beta. –
@Jason: Alors utilisez avec précaution :) (En fin de compte 'Equivalence' est une interface, donc ce n'est pas comme si vous comptez sur une * implémentation * qui pourrait disparaître.) –
Je peux promettre que ça ne partira pas, mais c'est en mouvement. Par exemple, pour la version 10.0 imminente, nous l'avons transformée en classe abstraite et y avons directement déplacé la plupart des Equivalences (et finirons probablement le travail à un moment donné). –