118 votes

Quelle est la différence entre compare() et compareTo() ?

Quelle est la différence entre la méthode Java compare() y compareTo() méthodes ? Ces méthodes donnent-elles la même réponse ?

4voto

dilip kumar Points 11

Comparable contient une méthode appelée compareTo(obj) qui ne prend qu'un seul argument et qui se compare à une autre instance ou à des objets de la même classe.

Comparateur contient une méthode appelée compare(obj1,obj2) qui prend deux arguments et compare la valeur de deux objets de la même classe ou de classes différentes.

3voto

Ole Points 922

La relation entre l'objet possédant cette méthode et ses collaborateurs est différente.

compareTo() est une méthode de l'interface Comparable Il est donc utilisé pour comparer CETTE instance à une autre.

compare() est une méthode de l'interface Comparateur Il est donc utilisé pour comparer deux instances différentes d'une autre classe entre elles.

Si vous voulez, mettre en œuvre Comparable signifie que les instances de la classe peuvent être facilement comparées.
Mise en œuvre de Comparator signifie que les instances sont adaptées pour comparer différents objets (d'autres classes).

3voto

godlovesdavid Points 41
compareTo(T object)

provient de l'interface java.lang.Comparable, implémentée pour comparer cet objet avec un autre afin de donner une valeur int négative pour que cet objet soit inférieur, 0 pour qu'il soit égal, ou une valeur positive pour qu'il soit supérieur à l'autre. Il s'agit de la méthode de comparaison la plus pratique, mais elle doit être implémentée dans chaque classe que vous souhaitez comparer.

compare(T obj1, T obj2)

provient de l'interface java.util.Comparator, implémentée dans une classe séparée qui compare les objets d'une autre classe pour donner une valeur int négative si le premier objet est inférieur, 0 si égal, ou une valeur positive si supérieur au second objet. Elle est nécessaire lorsque vous ne pouvez pas faire en sorte qu'une classe implémente compareTo() parce qu'elle n'est pas modifiable. Elle est également utilisée lorsque vous souhaitez comparer des objets de différentes manières, et non pas d'une seule (par exemple, par le nom ou l'âge).

2voto

Abgan Points 2249

compareTo() est appelé sur un objet, pour le comparer à un autre objet. compare() est appelé sur un objet pour comparer deux autres objets.

La différence réside dans l'endroit où est définie la logique qui effectue la comparaison réelle.

2voto

Michael Borgwardt Points 181658

La principale différence réside dans l'utilisation des interfaces :

Comparable (qui possède compareTo()) exige que les objets à comparer (afin d'utiliser un TreeMap, ou de trier une liste) implémentent cette interface. Mais que faire si la classe n'implémente pas Comparable et que vous ne pouvez pas la modifier parce qu'elle fait partie d'une bibliothèque tierce ? Vous devez alors implémenter un comparateur, ce qui est un peu moins pratique à utiliser.

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