Recommandé, 2024

Choix De L'Éditeur

Différence entre Comparable et Comparator en Java

Comparable et Comparator sont les interfaces génériques en Java utilisées pour comparer les éléments de données des objets. L'interface Comparable est présente dans le package java.lang et l'interface Comparator dans le package java.util. La différence fondamentale entre les interfaces Comparable et Comparator est que l'interface Comparable fournit la séquence de tri unique, tandis que l'interface Comparator fournit les séquences de tri multiples. Il existe d’autres différences entre les interfaces Comparable et Comparator que nous étudierons dans le tableau de comparaison.

Tableau de comparaison

Base de comparaisonComparableComparateur
De baseL'interface Comparable ne permet qu'une seule séquence de tri.L'interface de comparateur permet plusieurs séquences de tri.
PaquetsL’interface Comparable est présente dans le package java.lang.L'interface de comparateur est présente dans le package java.util.
Les méthodesL'interface comparable ne contient qu'une seule méthode
public int compareTo (Object obj);
L'interface de comparateur contient deux méthodes
public int compare (Object obj1, Object obj2)
boolean equals (Object obj)
la mise en oeuvreUne interface comparable est implémentée par la classe dont les objets doivent être comparés.L'interface de comparateur est implémentée par une classe sperate à la place de la classe dont les objets doivent être comparés.
ComparaisonLa méthode compareTo (Object obj) compare l'objet utilisé pour l'invoquer avec l'objet spécifié transmis à la méthode.La méthode compare (Object obj1, Object obj2) compare les deux objets spécifiés transmis à la méthode.
Liste / TableauLorsqu'une liste d'objet de type Comparable doit être comparée, la classe Collection fournit une méthode, à savoir Collections.sort (List lst).Lorsqu'une liste d'objets de type Comparable doit être comparée, la classe Collection fournit une méthode, à savoir
Collections.sort (Liste, Comparateur).

Définition de comparable

Comparable est une interface disponible dans le package java.lang. Une classe implémente l'interface de comparaison pour trier son objet dans l'ordre naturel. Les objets sont triés dans un ordre naturel, ce qui signifie que les objets sont comparés par leurs valeurs ASCII. Les classes qui implémentent l'interface Comparable sont les classes Byte, Character, Double, Float, Long, Short, String et Integer. Même la classe Date et Calander implémente également l'interface Comparable.

L'interface Comparable contient une seule méthode, CompareTo (Object obj). Cette méthode compare l'objet utilisé pour invoquer la méthode avec l'objet spécifié dans le paramètre. La syntaxe de la méthode est la suivante:

 public int compareTo (Object obj); 

La méthode CompareTo (Object obj) renvoie 0, lorsque l'objet comparé par la méthode contient la même valeur, il renvoie la valeur -ve si l'objet appelant est plus petit que l'objet spécifié et renvoie la valeur + ve si l'objet appelant a une valeur supérieure. valeur par rapport à l'objet spécifié. La classe Collections fournit une méthode de tri pour trier les éléments de la liste. Les éléments list (et array) de type Comparable peuvent être triés à l'aide de la méthode «Collections.sort (List lst)».

Définition de comparateur

Le comparateur est une interface disponible dans le package java.util. L'interface Comparator n'est pas implémentée sur la classe dont les objets doivent être comparés. Une classe séparée implémente l'interface Comparator de sorte que la logique de tri soit appliquée à chaque élément de données de l'objet d'une classe différente. Le comparateur contient deux méthodes comme suit:

 public int compare (Object obj1, Object obj2) et boolean égal (Object obj) 

La méthode compare () ci-dessus compare le premier objet obj1 au deuxième objet obj2. La méthode compare () renvoie 0 lorsque l'objet comparé par la méthode contient la même valeur. Il renvoie la valeur -ve si l'objet obj1 est inférieur à l'objet obj2 et renvoie la valeur + ve si l'objet obj1 a une valeur supérieure à celle qui est comparée. à l'objet obj2. La méthode equals () vérifie si l'objet spécifié est égal à l'objet appelant. La méthode equals () renvoie true si les deux objets comparés sont égaux, sinon elle renvoie false . La classe Collections fournit la méthode de tri des éléments de type liste et comparateur. Les éléments de liste des types de comparateur sont triés selon la méthode Collections.sort (List, Comparator).

Principales différences entre comparable et comparateur

  1. L’interface comparable permet une séquence de tri unique, ce qui signifie que vous ne pouvez comparer qu’un seul élément de données de l’objet dans la méthode compareTo (). L’interface Comparator permet plusieurs séquences de tri vous permettant de comparer plusieurs éléments de données de l’objet.
  2. L'interface Comparable est implémentée par la classe dont les objets doivent être comparés car la logique de tri est définie à l'intérieur de la même classe. D'autre part, l'interface de comparaison n'est pas implémentée par la classe dont les objets doivent être comparés car la logique de tri est définie dans les classes séparées, chaque classe définissant le tri sur un seul élément de données de l'objet et ces classes de définition implémentant l'interface de comparaison. .
  3. L’interface Comparable se trouve dans le package java.lang, tandis que l’interface Comparator se trouve dans le package java.util.
  4. L'interface Comparable déclare une seule méthode qui est compareTo (Object obj), tandis que l'interface Comparator déclare deux méthodes qui sont compare (Object obj1, Object obj2) et égal à (Object obj).
  5. La méthode compareTo (Object obj) de Comparable compare l'objet invoquant la méthode à l'objet spécifié transmis à la méthode, tandis que la méthode compare (Object obj1, Object obj2) de Comparator compare les objets obj1 à obj2 transmis à la méthode.
  6. La classe Collections fournit une méthode de tri «Collections.sort (List lst)» pour trier les objets du type Comparable. La classe Collections fournit la méthode de tri Collections.sort (List, Comparator) pour trier les objets de type Comparator.

Conclusion:

Si vous souhaitez trier les objets dans l'ordre naturel, vous pouvez utiliser l'interface comparable, sinon vous souhaitez trier les objets en fonction de n'importe quel attribut, puis l'interface Comparateur est utilisée.

Top