Différence entre Comparable et Comparator en Java

Table des matières:

Anonim

Qu'est-ce qui est comparable en Java?

Comparable en Java est un objet pour se comparer avec un autre objet. Cela permet de trier la liste des objets personnalisés. L'interface java.lang.Comparable doit être implémentée par une classe afin de comparer ses instances. Le tableau d'objets implémentant une interface comparable est trié automatiquement par les méthodes Arrays.sort et Collections.sort.

Dans ce tutoriel Comparator vs Comparable in Java, vous apprendrez:

  • Qu'est-ce qui est comparable en Java?
  • Qu'est-ce que Comparator en Java?
  • Méthode utilisée dans Comparable:
  • Méthode utilisée dans le comparateur:
  • Différence entre Comparable et Comparator en Java
  • Meilleures pratiques lors de l'utilisation de Comparator et Comparable en Java

Qu'est-ce que Comparator en Java?

Le comparateur en Java est un objet permettant de comparer différents objets de différentes classes. L'interface de comparaison en Java est également utilisée pour organiser les objets des classes définies par l'utilisateur. Il comprend deux méthodes d'interface de comparateur importantes connues sous le nom de compare (Object obj1, Object obj2) et equals (Object element).

DIFFÉRENCES CLÉS:

  • Comparable fournit la méthode compareTo () pour trier les éléments en Java tandis que Comparator fournit la méthode compare () pour trier les éléments en Java.
  • L'interface comparable est présente dans le package java.lang tandis que l'interface Comparator est présente dans le package java.util.
  • Comparable fournit une séquence de tri unique tandis que Comparator fournit plusieurs séquences de tri.
  • Comparable affecte la classe d'origine alors que le comparateur n'affecte pas la classe d'origine.

Méthode utilisée dans Comparable:

Voici une méthode importante utilisée dans l'interface Comparable:

Comparer aux():

La méthode CompareTo () est utilisée pour effectuer un tri naturel sur une chaîne. La signification du tri naturel est l'ordre de tri qui s'applique à l'objet, par exemple, l'ordre numérique pour trier les entiers, l'ordre alphabétique pour String, etc.

La syntaxe de la méthode CompareTo () est la suivante:

int compareTo(T obj)

Dans la syntaxe ci-dessus, T signifie le type d'objets que vous allez comparer.

CompareTo () compare l'objet avec T obj.

Production:

  • Il renvoie 0 si les valeurs sont égales.
  • Au cas où, si l'objet a une valeur moindre, cette méthode renvoie une valeur négative.
  • Si l'objet a une valeur plus élevée, il renvoie une valeur positive.

Exemple de méthode CompareTo ():

Le programme suivant d'exemple comparable Java montre la comparaison de deux caractères, "a" et "b". Le caractère "a" vient avant "b" par ordre alphabétique.

Par conséquent, la sortie est -1. Le caractère «b» vient après «a» par ordre alphabétique. La sortie est donc 1. Les caractères "a" et "b" sont tous deux équivalents. Par conséquent, la sortie est 0.

public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}

Production

Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0

Méthode utilisée dans le comparateur:

Voici les méthodes importantes utilisées dans l'interface du comparateur:

Comparer():

Compare () vous permet de classer les objets. Pour ce faire, vous devez créer une classe qui implémente l'interface du comparateur. Après cela, vous devez remplacer sa méthode de comparaison.

La syntaxe de la méthode compare () est la suivante:

compare(Object obj1, Object obj2)

Dans la syntaxe ci-dessus, obj1 et obj2 sont deux objets que vous devez comparer à l'aide de la méthode compare ().

Production:

  • Il renvoie un entier négatif si le premier argument est inférieur au second.
  • Renvoie zéro si le premier argument et le deuxième argument sont égaux.
  • Cette méthode peut renvoyer un entier positif, au cas où le premier argument serait supérieur au second.

Vous devez vous assurer que la relation est transitive. Par exemple, ((compare (a, b)> 0) && (compare (b, c)> 0)) qui implique compare (a, c)> 0.

Exemple de méthode de comparaison:

Dans le programme ci-dessous de l'exemple du comparateur Java, il y a 6 variables. "x", "y", "p", "q", "r" et "s". La sortie est -1 comme valeur de "x", 20 est inférieure à la valeur de "y", 30. La sortie est 0 car la valeur de "p", 40 est égale à la valeur de "q", 40 .

import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}

Production:

-101

Équivaut à():

Equals () vérifie si l'objet numérique est égal à l'objet, qui est passé en argument ou non.

La syntaxe de la méthode equals () est la suivante:

public boolean est égal à (objet o)

Cette méthode prend deux paramètres 1) n'importe quel objet 2) valeur de retour. Il renvoie true si l'argument passé n'est pas nul et est un objet du type similaire ayant la même valeur numérique.

Exemple de méthode d'égalité:

Dans l'exemple ci-dessous, nous comparons les quatre variables entre elles. Trois variables sont de type entier et une de type court. Le premier résultat est faux car la valeur de p, qui est 5, n'est pas égale à la valeur de q, qui est 20.

Le deuxième résultat est vrai car la valeur des variables p et r est la même, qui est 5. Enfin, la sortie est fausse, car les variables p et s ont des valeurs assignées différentes.

public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}

Production

falsetruefalse

Différence entre Comparable et Comparator en Java

Différence entre Comparable et Comparator en Java

Voici les principales différences entre Java Comparable et Comparator:

Comparable Comparateur
Comparable fournit la méthode compareTo () pour trier les éléments en Java. Comparator fournit la méthode compare () pour trier les éléments en Java.
Une interface comparable est présente dans le package java.lang. L'interface du comparateur est présente dans le package java.util.
La logique de tri doit être dans la même classe dont vous allez trier l'objet. La logique de tri doit être dans une classe distincte pour écrire un tri différent basé sur différents attributs d'objets.
La classe dont vous souhaitez trier les objets doit implémenter une interface comparable. La classe, dont vous souhaitez trier les objets, n'a pas besoin d'implémenter une interface de comparateur.
Il fournit des séquences de tri uniques. Il fournit plusieurs séquences de tri.
Cette méthode peut trier les données selon l'ordre de tri naturel. Cette méthode trie les données selon l'ordre de tri personnalisé.
Cela affecte la classe d'origine. c'est-à-dire que la classe réelle est modifiée. Cela n'affecte pas la classe d'origine, c'est-à-dire que la classe réelle n'est pas modifiée.
Implémenté fréquemment dans l'API par: Calendar, Wrapper classes, Date et String. Il est implémenté pour trier les instances de classes tierces.
Toutes les classes wrapper et la classe String implémentent une interface comparable. Les seules classes implémentées de Comparator sont Collator et RuleBasedColator.

Meilleures pratiques lors de l'utilisation de Comparator et Comparable en Java

  • Utilisez une interface comparable lorsque la comparaison est standard pour la classe spécifique.
  • Vous pouvez utiliser des lambdas avec un comparateur.
  • De nombreuses classes de base disponibles dans implémentent une interface comparable.
  • Il est possible d'utiliser TreeSet et TreeMap ou lors du tri Set ou Map.
  • La méthode compareTo () fonctionne aussi bien avec comparateur que comparable.
  • Utilisez l'interface du comparateur uniquement lorsque vous
  • La méthode compareTo () retournera un entier positif si le premier objet est supérieur à l'autre, négatif s'il est inférieur et zéro si les deux sont identiques.