Java’da Comparable vs Comparator

sametklou

Java’da Comparable vs Comparator

Java programlama dilinde objelerin karşılaştırılması için kullanılan iki temel araç olan Comparable ve Comparator arasındaki farkları ve nasıl kullanılacaklarını öğrenelim.

Comparable Nedir?

Comparable arayüzü, sınıfın kendisine ait doğal sıralama kriterlerini tanımlamak için kullanılır. Bu arayüzü uygulayan sınıflar, compareTo() metodunu override ederek karşılaştırma mantığını belirlerler.

Örneğin, Product sınıfını şu şekilde tanımladığımızı düşünelim:

public class Product implements Comparable<Product> {
    private String name;
    private double price;

    // constructor, getter and setter methods

    @Override
    public int compareTo(Product p) {
        return Double.compare(this.price, p.getPrice());
    }
}

Bu sayede Product objeleri Collections.sort() gibi metodlarla doğal sıralamaya göre dizilir.

Comparator Nedir?

Comparator arabirimi ise, sınıfın dışında farklı sıralama kriterleri belirlemek için kullanılır. Bu sayede aynı sınıfın farklı sıralamalarla kullanılmasını sağlar.

Örneğin, fiyata göre değil de isme göre sıralamak istediğimizde aşağıdaki NameComparator sınıfını kullanabiliriz:

public class NameComparator implements Comparator<Product> {
    @Override
    public int compare(Product p1, Product p2) {
        return p1.getName().compareTo(p2.getName());
    }
}

Bu sayede aynı Product listesini hem fiyata hem de isme göre sıralama yapabiliriz.

Karşılaştırma Örneği

List<Product> productList = new ArrayList<>();
productList.add(new Product("Laptop", 1500));
productList.add(new Product("TV", 1000));
productList.add(new Product("Phone", 800));

// Fiyata göre sıralama
Collections.sort(productList);

// İsme göre sıralama
Collections.sort(productList, new NameComparator());

Bu örnek, Comparable ve Comparator arasındaki farkı daha iyi anlamanıza yardımcı olacaktır. Hangi durumlarda hangi aracı kullanmanız gerektiğine karar vermek için projenizin ihtiyaçlarına göre doğru seçimi yapmalısınız.

Java'da Comparable ve Comparator kullanarak objeler arasında kolayca karşılaştırma yapabilir ve sıralama işlemlerini yönetebilirsiniz. Bu konu hakkında daha fazla bilgi edinmek için Oracle Java Documentation'a göz atabilirsiniz.