Sobes.tech
Junior

Comparator va Comparable o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Comparable obyekti uchun "tabiiy" tartibni aniqlash uchun ishlatiladi. U Comparable<T> interfeysini amalga oshiradi va compareTo(T o) metodini taqdim etadi.

Comparator bir yoki bir nechta alternativ tartiblarni aniqlash uchun ishlatiladi. U Comparator<T> interfeysini amalga oshiradi va compare(T o1, T o2) metodini taqdim etadi.

Asosiy farqlar jadvalda taqdim etilgan:

Xususiyat Comparable Comparator
Interfeys java.lang.Comparable<T> java.util.Comparator<T>
Tartiblash usuli compareTo(T o) compare(T o1, T o2)
Qo'llanilishi Ob'ektning o'z ichida Alohida sinf yoki lambda
Mantiq joylashuvi O'z sinfida Alohida joyda
Tartiblar soni Faqat "tabiiy" Ko'p alternativlar
Sinfni o'zgartirish Sinfni o'zgartishni talab qiladi Sinfni o'zgartirmaydi

Comparable dan foydalanish misoli:

// Ism bo'yicha saralash uchun Comparable ni amalga oshirgan sinf
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) {
        // Ism bo'yicha taqqoslash
        return this.name.compareTo(other.name);
    }

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

Comparator dan foydalanish misoli:

// Yoshi bo'yicha saralash uchun Comparator
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Yoshi bo'yicha taqqoslash
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}