Sobes.tech
Junior — Middle

Koja je razlika između interfejsa Comparator i Comparable u Javi?

sobes.tech АИ

Одговор од АИ

U Javi, interfejsi Comparable i Comparator koriste se za poređenje objekata, ali imaju različite svrhe:

  • Comparable — definiše prirodni red objekata. Klasa implementira ovaj interfejs kako bi objekti mogli da se porede pomoću metode compareTo(). Obično se koristi za podrazumevano sortiranje.

  • Comparator — je odvojeni objekat koji određuje alternativni način poređenja dva objekta. Koristi se kada je potrebno sortirati objekte po različitim kriterijumima ili kada klasa ne implementira Comparable.

Primer:

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

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // prirodni red po imenu
    }
}

// Comparator za sortiranje po starosti
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Na ovaj način, Comparable definiše jedan način poređenja unutar klase, dok Comparator omogućava kreiranje više spoljašnjih načina poređenja.