Doublons possibles:
différence entre compare () et compareTo ()
Java: quelle est la différence entre l'implémentation de Comparable et de Comparator?
Quelles sont les principales différences entre Comparable et Comparator.
et qui est préféré à l'autre dans quels scénarios?
Merci
Mise à jour - BON LIEN AVEC EXEMPLE !!
http://www.digizol.com/2008/07/Java-sorting-comparator-vs-comparable.html
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 (bien que non requise) de s'aligner sur les autres méthodes de cet objet. Par exemple, un 0 doit toujours être renvoyé 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 s'aligner sur l'ordre naturel.
Par exemple, les chaînes sont généralement comparées par ordre alphabétique. Ainsi, la "a".compareTo("b")
utiliserait des comparaisons alphabétiques. Si vous souhaitez comparer des 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 fins de moyens similaires. En général, implémentez comparable pour l'ordre naturel (la définition de l'ordre naturel est évidemment sujette à interprétation) et écrivez un comparateur pour d'autres besoins de tri ou de comparaison.
Comparator
vous permet 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 le contrôle d'une classe (ou si vous voulez fournir plusieurs façons de comparer des objets sur lesquels vous avez le contrôle), utilisez Comparator
.
Sinon, vous pouvez utiliser Comparable
.