Sobes.tech
Junior — Middle

Mi a különbség a Comparator és a Comparable interfészek között Java-ban?

sobes.tech MI

Válasz az MI-től

Java-ban a Comparable és Comparator interfészeket az objektumok összehasonlítására használják, de különböző célokra:

  • Comparable — meghatározza az objektumok természetes sorrendjét. Az osztály implementálja ezt az interfészt, hogy az objektumokat a compareTo() metódussal össze lehessen hasonlítani. Általában az alapértelmezett rendezéshez használják.

  • Comparator — egy külön objektum, amely egy alternatív módszert határoz meg két objektum összehasonlítására. Akkor használják, amikor az objektumokat különböző kritériumok szerint kell rendezni, vagy amikor az osztály nem implementálja a Comparable-t.

Példa:

class Person implements Comparable<Person> {
    String name;
    int age;

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // természetes sorrend név szerint
    }
}

// Comparator az életkor szerinti rendezéshez
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Így a Comparable egy belső összehasonlítási módot határoz meg az osztályon belül, míg a Comparator lehetővé teszi több külső összehasonlítási mód létrehozását.