Sobes.tech
Junior — Middle

Java-ში Comparator და Comparable ინტერფეისების შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

Java-да Comparable һәм Comparator интерфейсләре объектларны чагыштыру өчен кулланыла, ләкин аларның максатлары төрлечә:

  • Comparable — объектларның табигый тәртибен билгели. Класс бу интерфейсны тормышка ашыра, шуңа күрә объектлар compareTo() методы белән чагыштырыла ала. Гадәттә, бу стандарт сортлау өчен кулланыла.

  • Comparator — аерым объект, ул ике объектны чагыштыруның альтернатив ысулын билгели. Ул, объектларны төрле критерийлар буенча сортлау кирәк булган вакытта яки класс Comparableны тормышка ашырмаса кулланыла.

Мисал:

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

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // табигый тәртип исем буенча
    }
}

// Яшь буенча сортлау өчен Comparator
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Шулай итеп, Comparable класс эчендә чагыштыру ысулын билгели, ә Comparator тышкы күпчелек чагыштыру ысулларын булдырырга мөмкинлек бирә.