Java: Comparable vs Comparateur [dupliquer]
Doublons Possibles:
différence entre compare () et compareTo()
Java: Quelle est la différence entre l'implémentation de Comparable et Comparateur?
Quelles sont les principales différences entre Comparable et Comparateur.
Et qui est préféré à l'autre dans quels scénarios?
Merci
Mise à jour-BON LIEN AVEC L'EXEMPLE!!
Http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
2 answers
Lorsque votre classe implémente Comparable , la méthode compareTo
de la classe définit l'ordre "naturel" de cet objet. Cette méthode est contractuellement obligée (mais pas exigée) d'être en ligne avec d'autres méthodes sur cet objet, comme un 0 doit toujours être retourné pour les objets lorsque les comparaisons .equals()
renvoient true.
Un Comparateur est sa propre définition de la façon de comparer deux objets, et peut être utilisé pour comparer des objets d'une manière qui pourrait ne pas ordre naturel.
Par exemple, les chaînes sont généralement comparées par ordre alphabétique. Ainsi, le "a".compareTo("b")
utiliserait des comparaisons alphabétiques. Si vous voulez comparer les chaînes sur la longueur, vous devez écrire un comparateur personnalisé.
En bref, il n'y a pas beaucoup de différence. Ils sont les deux extrémités de moyens similaires. En général, implémentez comparable pour l'ordre naturel, (la définition de l'ordre naturel est évidemment ouverte à l'interprétation), et écrivez un comparateur pour d'autres besoins de tri ou de comparaison.
Comparator
fournit un moyen pour vous de fournir une logique de comparaison personnalisée pour les types sur lesquels vous n'avez aucun contrôle.
Comparable
vous permet de spécifier comment les objets que vous implémentez sont comparés.
Évidemment, si vous n'avez pas de contrôle sur une classe (ou si vous souhaitez fournir plusieurs façons de comparer des objets sur lesquels vous avez le contrôle), utilisez Comparator
.
Sinon, vous pouvez utiliser Comparable
.