Sobes.tech
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.