Maison  >  Article  >  Java  >  L'interface du comparateur

L'interface du comparateur

PHPz
PHPzoriginal
2024-07-16 16:47:12513parcourir

Comparator peut être utilisé pour comparer les objets d'une classe qui n'implémente pas Comparable. Vous avez appris à comparer des éléments à l'aide de l'interface Comparable (la section). Plusieurs classes de l'API Java, telles que String, Date, Calendar, BigInteger, BigDecimal et toutes les classes wrapper numériques pour les types primitifs, implémentent l'interface Comparable. L'interface Comparable définit la méthode compareTo, qui est utilisée pour comparer deux éléments de la même classe qui implémentent l'interface Comparable.

Et si les classes des éléments n'implémentent pas l'interface Comparable ? Ces éléments peuvent-ils être comparés ? Vous pouvez définir un comparateur pour comparer les éléments de différentes classes. Pour ce faire, définissez une classe qui implémente l'interface java.util.Comparator et remplace sa méthode compare.

public int compare(T element1, T element2)

Renvoie une valeur négative si element1 est inférieur à element2, une valeur positive si element1 est supérieur à element2 et zéro s'ils sont égaux.

La classe GeometricObject a été introduite dans la section Classes abstraites. La classe GeometricObject n'implémente pas l'interface Comparable. Pour comparer les objets de la classe GeometricObject, vous pouvez définir une classe de comparaison, comme indiqué dans le code ci-dessous.

Image description

Ligne 4 met en œuvre le Comparateur. La ligne 5 remplace la méthode de comparaison pour comparer deux objets géométriques. La classe implémente également Serialalisable. C'est généralement une bonne idée que les comparateurs implémentent Sérialisable, car ils peuvent être utilisés comme méthodes de classement dans des structures de données sérialisables. Pour que la structure de données soit sérialisée avec succès, le comparateur (s'il est fourni) doit implémenter Seriallessly.

Le code ci-dessous donne une méthode qui renvoie un objet plus grand entre deux objets géométriques. Les objets sont comparés à l'aide du GeometricObjectComparator.

Image description

Le programme crée un objet Rectangle et un Circle aux lignes 7 et 8 (les classes Rectangle et Circle ont été définies dans la section, Classes abstraites). Ce sont toutes des sous-classes de GeometricObject. Le programme invoque la méthode max pour obtenir l'objet géométrique avec la plus grande surface (lignes 10).

Le GeometricObjectComparator est créé et passé à la méthode max (ligne 10) et ce comparateur est utilisé dans la méthode max pour comparer les objets géométriques dans ligne 16.

Comparable est utilisé pour comparer les objets de la classe qui implémentent Comparable. Comparator peut être utilisé pour comparer les objets d'une classe qui n'implémente pas Comparable.

La comparaison d'éléments à l'aide de l'interface Comparable est appelée comparaison à l'aide de l'ordre naturel, et la comparaison d'éléments à l'aide de l'interface Comparateur est appelée comparaison à l'aide de comparateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn