Sobes.tech
Junior — Middle

Mis vahe on Java liideste Comparator ja Comparable vahel?

sobes.tech AI

Vastus AI-lt

Java-s kasutatakse Comparable ja Comparator liidestusi objektide võrdlemiseks, kuid neil on erinevad eesmärgid:

  • Comparable — määrab objektide loomuliku järjekorra. Klass rakendab seda liidest, et objektid saaksid omavahel võrrelda compareTo() meetodi abil. Tavaliselt kasutatakse vaikimisi sorteerimiseks.

  • Comparator — on eraldi objekt, mis määrab alternatiivse viisi kahe objekti võrdlemiseks. Seda kasutatakse, kui soovitakse objekte sorteerida erinevate kriteeriumide järgi või kui klass ei rakenda Comparable.

Näide:

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

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // loomulik järjekord nime järgi
    }
}

// Comparator vanuse järgi sorteerimiseks
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Seega määrab Comparable ühe võrdlusmeetodi klassi sees, samas kui Comparator võimaldab luua mitmeid väliseid võrdlusmeetodeid.