Sobes.tech
Junior

Comparator və Comparable arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Comparable sinif obyekti üçün "təbii" sıralama ardıcıllığını müəyyən etmək üçün istifadə olunur. Bu, Comparable<T> interfeysini həyata keçirir və compareTo(T o) metodunu təmin edir.

Comparator bir və ya bir neçə alternativ sıralama ardıcıllığını müəyyən etmək üçün istifadə olunur. Bu, Comparator<T> interfeysini həyata keçirir və compare(T o1, T o2) metodunu təmin edir.

Əsas fərqlər cədvəldə təqdim edilmişdir:

Xüsusiyyət Comparable Comparator
İnterfeys java.lang.Comparable<T> java.util.Comparator<T>
Sıralama metodu compareTo(T o) compare(T o1, T o2)
İstifadə Obyektin öz sinfi daxilində Ayrı sinif və ya lambda
Logika yeri Sinif daxilində Ayrı yerdə
Sıralama sayı Yalnız "təbii" sıralama Çoxsaylı alternativlər
Sinfi dəyişdirmək Sinfi dəyişdirməyi tələb edir Dəyişiklik tələb etmir

Comparable istifadə nümunəsi:

// Ad üzrə sıralama üçün Comparable tətbiq edən sinif
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) {
        // Ad ilə müqayisə
        return this.name.compareTo(other.name);
    }

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

Comparator istifadə nümunəsi:

// Yaş üzrə sıralama üçün Comparator
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Yaş ilə müqayisə
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}