L'interface java.util.Comparator en Java est utilisée pour trier les collections et les tableaux d'objets en utilisant les méthodes de tri de Collections.sort()
et Arrays.sort()
. Dans une classe qui implémente cette interface, la méthode compare()
doit être définie.
La méthode compare()
est une méthode d'interface du comparateur qui prend deux objets en arguments à comparer. Cette méthode retourne un nombre négatif, zéro ou un nombre positif si le premier argument est considéré comme étant respectivement inférieur, égal ou supérieur au second.
int compare(Object o1, Object o2);
Supposons par exemple que nous avons une classe Etudiant
avec des attributs comme l'âge, le nom, l'identifiant, etc. Si nous voulons trier une liste d'instances Etudiant
par âge, nous pouvons implémenter l'interface Comparator de cette manière :
public class TrierParAge implements Comparator<Etudiant> {
// Utilisation de la méthode compare
public int compare(Etudiant e1, Etudiant e2) {
return e1.age - e2.age;
}
}
Lorsque nous utilisons Collections.sort(list, new TrierParAge());
, la liste d'étudiants sera triée en fonction de leur âge.
D'autres méthodes telles que compareTo()
, equals()
et hashCode()
, bien que également utiles dans certains contextes, ne sont pas nécessaires pour l'implémentation de l'interface Comparator.
compareTo()
est une méthode de l'interface Comparable, pas de Comparator. Elle compare l'objet courant avec l'objet spécifié.
equals()
est une méthode de la classe Object qui détermine l'égalité de deux objets.
hashCode()
est également une méthode de la classe Object qui retourne un code de hachage pour l'objet.
C'est la méthode compare()
qui est essentielle dans la définition d'une classe qui implémente l'interface Comparator, car elle définit le critère de comparaison entre deux objets du même type. Donc la réponse correcte à la question est compare()
.