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 obligatoire (bien que non demandée) pour être en ligne avec d'autres méthodes sur cet objet, comme un 0 devrait toujours être retourné pour les objets lorsque les comparaisons .equals()
retournent vrai.
Une Comparator est sa propre définition de la façon de comparer deux objets, et peut être utilisée pour comparer des objets d'une manière qui pourrait ne pas s'aligner avec l'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 souhaitez 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 à des moyens similaires. En général mettre en œuvre comparable pour l'ordre naturel, (la définition d'ordre naturel est évidemment ouverte à l'interprétation), et écrire un comparateur pour d'autres besoins de tri ou de comparaison.
http://grdurand.com/static/presentation_four/comparable.html –
Également un dup de: [Quand utiliser Comparable et Comparator] (http://stackoverflow.com/q/2266827/642706). –
Excellent exemple de lien. Simple et clair. Lis bien. – Androidster