Sobes.tech
Junior — Middle

Java'da Comparator va Comparable interfeyslari o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Java-da Comparable va Comparator interfeyslar ob'ektlarni taqqoslash uchun ishlatiladi, ammo ular turli maqsadlar uchun:

  • Comparable — ob'ektlarning tabiiy tartibini belgilaydi. Bu interfeysni amalga oshiradigan sinf, ob'ektlarni compareTo() metodi yordamida taqqoslash imkonini beradi. Odatda, bu standart saralash uchun ishlatiladi.

  • Comparator — bu alohida ob'ekt bo'lib, ikki ob'ektni taqqoslash uchun alternativ usulni belgilaydi. Bu, ob'ektlarni turli mezonlar bo'yicha saralash yoki sinf Comparableni amalga oshirmagan hollarda ishlatiladi.

Misol:

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

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // tabiiy tartib nom bo'yicha
    }
}

// Yoshi bo'yicha saralash uchun Comparator
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Shu tarzda, Comparable sinf ichida taqqoslash usulini belgilaydi, Comparator esa tashqi taqqoslash usullarini yaratishga imkon beradi.