140 votes

Java: Comparable vs Comparator

Doublons Possibles:
différence entre les comparer() et compareTo()
Java: Quelle est la différence entre la mise en œuvre Comparable et de Comparaison?

Quelles sont les clés de différences entre Comparables et Comparateur.

et qui est privilégié par rapport à l'autre dans ce cas?

Merci

Mise à jour - BONNE LIAISON AVEC l'EXEMPLE!!

http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

187voto

Andy Pryor Points 4118

Lors de votre classe implémente Comparable, la méthode compareTo de la classe est de définir le "naturel" de la commande de cet objet. Cette méthode est tenu par contrat (même si elle n'est pas exigé) afin d'être en ligne avec d'autres méthodes sur un objet, comme un 0 doit toujours être renvoyés pour des objets lorsque l' .equals() comparaisons return true.

Un Comparateur est sa propre définition de la façon de comparer deux objets, et peut être utilisé pour comparer des objets dans une façon qui pourrait ne pas s'aligner avec l'ordre naturel.

Par exemple, les Chaînes sont généralement comparés par ordre alphabétique. Ainsi, la "une".compareTo("b") serait d'utiliser alphabétique des comparaisons. Si vous voulez comparer des Chaînes de longueur, vous aurez besoin de rédiger un personnalisé du comparateur.

En bref, il n'y a pas beaucoup de différence. Ils sont tous les deux extrémités à des moyens similaires. En général de mettre en œuvre comparables pour l'ordre naturel, (ordre naturel définition est évidemment ouverte à l'interprétation), et d'écrire un comparateur pour les autres de tri ou de comparaison des besoins.

128voto

Justin Niessner Points 144953

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 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 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X