Sobes.tech
Junior

Comparator жана Comparable ортосунда кандай айырма бар?

sobes.tech AI

AIден жооп

Comparable колдонулат объекттин классынын "табигый" сорттоо тартибин аныктоо үчүн. Ал Comparable<T> интерфейсин ишке ашырып, compareTo(T o) методу менен камсыз кылат.

Comparator колдонулат бир же бир нече альтернативдүү сорттоо тартиптерин аныктоо үчүн. Ал Comparator<T> интерфейсин ишке ашырып, compare(T o1, T o2) методу менен камсыз кылат.

Негизги айырмачылыктар таблицада көрсөтүлгөн:

Белги Comparable Comparator
Интерфейс java.lang.Comparable<T> java.util.Comparator<T>
Сорттоо методу compareTo(T o) compare(T o1, T o2)
Колдонуу Объекттин классынын ичинде Аеросо класс же лямбда
Логиканын жайгаштырылышы Класстын ичинде Аеросо жерде
Тартиптер саны Бир "табигый" Көп альтернативдүү
Класс өзгөртүү Өзгөртүүнү талап кылат Өзгөртүүнү талап кылбайт

Comparable колдонуу мисалы:

// Аты боюнча сорттоо үчүн Comparable ишке ашырган класс
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) {
        // Аты боюнча салыштыруу
        return this.name.compareTo(other.name);
    }

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

Comparator колдонуу мисалы:

// Жаш боюнча сорттоо үчүн Comparator
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Жашы боюнча салыштыруу
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}