Quelle est la différence entre les interfaces Comparator et Comparable en Java?
sobes.tech IA
Réponse de l'IA
En Java, les interfaces Comparable et Comparator sont utilisées pour comparer des objets, mais ont des objectifs différents :
-
Comparable — définit l'ordre naturel des objets. La classe implémente cette interface pour que les objets puissent être comparés entre eux via la méthode
compareTo(). Elle est généralement utilisée pour le tri par défaut. -
Comparator — est un objet séparé qui définit une méthode alternative de comparaison de deux objets. Il est utilisé lorsque vous souhaitez trier des objets selon différents critères ou lorsque la classe ne met pas en œuvre
Comparable.
Exemple :
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // ordre naturel par nom
}
}
// Comparator pour trier par âge
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
Ainsi, Comparable définit une méthode de comparaison interne à la classe, tandis que Comparator permet de créer plusieurs méthodes de comparaison externes.