Comparable vs comparateur : Différence entre comparable et comparateur

Publié: 2020-12-30

Table des matières

Comparable et comparateur : un aperçu

Comparable et comparator sont les deux interfaces du langage de programmation Java permettant de déterminer le comportement dans lequel les classes seront implémentées. Alors que Comparable est utilisé sur des objets qui sont naturellement ordonnés, l'interface Comparator implémente le tri en prenant en compte les attributs d'un objet. De plus, le tri Comparator prend en compte les objets de deux classes différentes et Comparable compare les objets en utilisant la référence "this".

Maintenant que nous avons établi le principe de base sur lequel fonctionnent les deux interfaces, examinons les différences entre les deux.

Différence entre comparable et comparateur

Méthode de tri

Comparable

Il utilise la fonction compareTo() pour le tri. C'est la seule méthode présente dans l'interface de tri Comparable.

compareTo(Object O) prend comme argument un objet et le compare à un autre du même type. Si un objet est une chaîne, vous ne pouvez le comparer qu'à un autre objet du même type. Il en va de même avec un objet int et ainsi de suite. compareTo() renvoie une valeur entière négative, positive ou nulle en fonction du résultat du tri.

Comparateur

Il existe deux méthodes pour trier les éléments dans Comparator : compare() et equals().

compare(Object O1, Object O2) prend en compte deux arguments en entrée et fournit la sortie souhaitée. Il renvoie un entier pour indiquer comment le premier argument se compare au second.

  • Si O1 est inférieur à O2, il renvoie un entier négatif.
  • Si O1 est supérieur à O2, il renverra un entier positif.
  • Si O1 est égal à O2, il renvoie 0.

equals(Object) prend en compte un objet en entrée et le compare au comparateur. Il renvoie True si l'objet est égal au comparateur. Il garantit également que la commande ne change pas.

Paquet utilisé

Comparable

Il existe dans le package java.lang de Java.

Comparateur

Il existe dans le package java.util de Java.

Commande et classe

Comparable

  • Il prend en compte les objets qui suivent un ordre naturel, c'est-à-dire qui ont tendance à se trier. Par exemple, ordre alphabétique ou ordre numérique en cas de noms, prix, salaire, matricule, âge, etc.
  • Il est également important que les deux objets appartiennent à la même classe.
  • L'interface comparable compare "cette" référence avec l'objet spécifié.
  • Le tri à l'aide de Comparable affecte la classe réelle.

Comparateur

  • Cette interface est principalement utilisée pour trier les attributs des objets spécifiés. Ils n'ont pas besoin d'avoir un ordre naturel; il peut être personnalisé.
  • La logique de tri doit être dans des classes séparées pour comparer les attributs des objets des deux classes considérées.
  • La classe réelle reste inchangée.

Séquences et collections

Comparable

  • Il ne prend en charge que les séquences de tri uniques. Cela implique que vous ne pouvez prendre en compte qu'un seul élément ou attribut d'une collection, tel qu'un numéro de matricule, un âge ou un grade.
  • Pour trier une collection d'objets, de tableaux ou de liste, vous pouvez utiliser Collection. sort(List) ou Arrays. trier(Liste). Cela ramènera les objets dans leur ordre naturel .

Comparateur

  • Il prend en charge plusieurs séquences de tri. Cela implique que vous pouvez prendre en compte plusieurs éléments ou attributs d'une collection tels qu'un numéro de matricule, un âge et un rang.
  • Vous pouvez utiliser un collection.sort(list, comparator) pour trier une collection.

Voici un résumé de toutes les différences entre Comparable et Comparator

Comparable Comparateur
Emballer
Java.lang Java.util
Méthode de tri
comparer aux() comparer()
Commande
Commande naturelle Commande personnalisée
Type d'objet
Les objets en comparaison doivent être du même type Les objets de différentes classes sont considérés
Affect sur la classe
La classe est modifiée N'affecte pas la classe
Séquence de tri
Séquence de tri unique Séquence de tri multiple

Inscrivez-vous aux cours de développement de logiciels des meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Choses à garder à l'esprit lors de l'utilisation de comparable et de comparateur en Java

  • L'interface comparable est celle à choisir si vous vendez pour effectuer une comparaison standard pour une classe spécifique.
  • Le comparateur permet l'utilisation de lambda.
  • Vous pouvez utiliser la méthode compareTo() pour implémenter à la fois Comparator et Comparable.
  • L'interface de comparateur est recommandée si vous recherchez la flexibilité dans le tri

Conclusion

Dans la plupart des scénarios réels, lorsque nous trions, nous avons généralement une variété de paramètres à l'esprit. De plus, étant donné que l'utilisation de résultats comparables dans le tri par défaut et ne peut pas être modifiée dynamiquement, il est moins pratique que Comparator qui vous permet de personnaliser et de choisir parmi différentes méthodes de tri en fonction de vos besoins. Pour cette seule raison, Comparator trouve des applications plus pratiques que Comparable.

Lis : Quelques projets Java intéressants à découvrir

Si vous souhaitez en savoir plus sur Java, le développement de la pile complète, consultez le programme exécutif PG de upGrad & IIIT-B en développement de logiciels à pile complète, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets, et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Que sont les interfaces dans les langages de programmation ?

Est-ce facile d'apprendre Java ?

Java introduit un paradigme de programmation orienté objet, permettant même aux développeurs Java les plus inexpérimentés de penser et de créer des programmes comme un développeur expérimenté. Java est issu des langages de programmation C et C++ qui sont également largement utilisés aujourd'hui. Bien que Java présente certaines similitudes avec C et C++ en termes de fonctionnalités, il est devenu un langage beaucoup plus convivial. Étant donné que la programmation orientée objet simplifie la maintenance et la modification du code existant, même les codeurs novices peuvent commencer à travailler sur des projets d'entreprise. Les nouveaux développeurs sont moins susceptibles de rencontrer des erreurs d'exécution imprévues puisque Java est vérifié pour les erreurs avant l'exécution. Java oblige les programmeurs à spécifier correctement tous les éléments de code, réduisant ainsi les risques d'erreurs à mesure que les applications se développent.

Pourquoi le tri est-il nécessaire en Java ?

Le tri fait référence à un ensemble de techniques permettant de réorganiser les emplacements des éléments dans un tableau de sorte qu'ils soient tous dans l'ordre croissant ou décroissant. Un algorithme de tri décent doit également garantir que les éléments ayant la même valeur restent dans le tableau trié dans le même ordre. Le tri est nécessaire pour comprendre en profondeur les structures de données et les algorithmes. Java en tant que langage de programmation est exceptionnellement polyvalent et peut être utilisé pour implémenter un certain nombre d'algorithmes de tri. La majorité de ces algorithmes sont assez polyvalents et peuvent être implémentés de manière récursive et itérative.