Sobes.tech
Junior

Koja je razlika između Comparator i Comparable?

sobes.tech АИ

Одговор од АИ

Comparable se koristi za određivanje "prirodnog" reda sortiranja za objekat klase. Implementira interfejs Comparable<T> i pruža metodu compareTo(T o).

Comparator se koristi za definisanje jednog ili više alternativnih redova sortiranja. Implementira interfejs Comparator<T> i pruža metodu compare(T o1, T o2).

Glavne razlike su prikazane u tabeli:

Osobina Comparable Comparator
Interfejs java.lang.Comparable<T> java.util.Comparator<T>
Metod sortiranja compareTo(T o) compare(T o1, T o2)
Upotreba Unutar klase objekta Odvojena klasa ili lambda
Lokacija logike U samoj klasi Na posebnom mestu
Broj redova Samo jedan "prirodan" red Više alternativnih redova
Izmena klase Zahteva izmenu klase Ne zahteva izmenu klase

Primer korišćenja Comparable:

// Klasa koja implementira Comparable za sortiranje po imenu
class Person implements Comparable<Person> {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Person other) {
        // Poređenje po imenu
        return this.name.compareTo(other.name);
    }

    @Override
    public String toString() {
        return "Person{" +
               "name='" + name + '\'' +
               ", age=" + age +
               '}';
    }
}

Primer korišćenja Comparator:

// Comparator za sortiranje po starosti
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Poređenje po starosti
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}