Sobes.tech
Junior

Comparator ve Comparable arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Comparable, bir sınıf nesnesi için "doğal" sıralama düzenini belirlemek için kullanılır. Comparable<T> arayüzünü uygular ve compareTo(T o) metodunu sağlar.

Comparator, bir veya birkaç alternatif sıralama düzenini tanımlamak için kullanılır. Comparator<T> arayüzünü uygular ve compare(T o1, T o2) metodunu sağlar.

Ana farklar tablo halinde sunulmuştur:

Özellik Comparable Comparator
Arayüz java.lang.Comparable<T> java.util.Comparator<T>
Sıralama metodu compareTo(T o) compare(T o1, T o2)
Kullanım Nesnenin kendi sınıfı içinde Ayrı bir sınıf veya lambda
Mantık konumu Sınıf içinde Ayrı bir yerde
Sıralama sayısı Sadece "doğal" sıralama Birden fazla alternatif sıralama
Sınıf değişikliği Sınıfı değiştirmeyi gerektirir Sınıfı değiştirmeye gerek yok

Comparable kullanımı örneği:

// İsme göre sıralama yapan Comparable uygulayan sınıf
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) {
        // İsme göre karşılaştırma
        return this.name.compareTo(other.name);
    }

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

Comparator kullanımı örneği:

// Yaşa göre sıralama için Comparator
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Yaşa göre karşılaştırma
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}