Junior — Middle
Care este diferența dintre interfețele Comparator și Comparable în Java?
sobes.tech AI
Răspuns de la AI
În Java, interfețele Comparable și Comparator sunt utilizate pentru compararea obiectelor, dar au scopuri diferite:
-
Comparable — definește ordinea naturală a obiectelor. Clasa implementează această interfață pentru ca obiectele să poată fi comparate între ele folosind metoda
compareTo(). Este folosită de obicei pentru sortarea implicită. -
Comparator — este un obiect separat care stabilește o metodă alternativă de comparare a două obiecte. Este utilizat atunci când trebuie sortate obiecte după diferiți parametri sau când clasa nu implementează
Comparable.
Exemplu:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // ordine naturală după nume
}
}
// Comparator pentru sortare după vârstă
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
Astfel, Comparable stabilește o metodă de comparare internă în clasă, iar Comparator permite crearea mai multor metode externe de comparare.