Comparable Nedir? Nasıl Kullanılır?

Bu yazıda Comparable interface’ni kullanarak List arayüzlerini implemente eden sınıflarda sıralama(sorting) işlemleri yapacağız.

Comparable Interface ve compareTo() Metodu

java.lang paketi içinde Comparable adlı bir interface vardır.

compareTo() metodunun int değeri verdiğini düşünelim. Bu sırada negatif sıfırdan küçük int; pozitif ise sıfırdan büyük int anlamına gelir. Implement edilen Comparable arayüzünün içinde bulunan compareTo() metodunun istenirse tasarımı değiştirilebilir. Yani negatif değerler yerine pozitif; pozitif değerler yerine negatif verecek biçimde değiştirilebilir. Bu tamamiyle programcının insiyatifine kalmıştır.

Yukarıdaki kod parçacağı iki tam sayı nesnesinin mukayese edildiğini gösteriyor.

Aşağıdaki Programı İnceleyelim

Main Sınıfı

Insanlar Sınıfı

Yukarıdaki program sıralama işlemi yapıyor. Burada compareTo() metodu içerisinde objenin hangi kriterlere göre sıralanmasını istiyorsak o şekilde belirtmemiz gerekmektedir . Biz bu örnekte Insanlar sınıfının yaş bilgisine göre sıralanmasını istiyoruz.

Şimdi teker teker kod parçacıklarını inceleyelim.

Override edilen comparteTo() metodu int tipinde bir geri dönüş bekliyor.

Metot gövdesinde bulunan,

Birinci eğer koşulunun sağlanması durumunda parametre olarak gönderilen Insanlar nesnesinin yas ile bulunduğu sınıftaki yas değişkeni karşılaştırılıyor. Koşul sağlanırsa -1 değerini döndürüyor.

İkinci eğer koşulu sağlanırsa 1 değeri döndürülüyor.

Hiçbir koşul sağlanmazsa (eşitlik durumunda) 0 değerini döndürüyor.

Insanlar sınıfına özel tanımlamalar yapılıyor.

Main sınıfında geri dönelim.

Birinci satırda kisiler adlı ArrayList tanımlanıyor. Kabul ettiği parametre olarak da yalnızca Insanlar nesneleri alabiliyor. İkinci ve üçüncü satırda Insanlar tipinde nesneler oluşturuluyor ve kisiler listesine ekleniyor.

  1. satırda Collections sınıfına kisiler nesnesi gönderiliyor.
  2. satırda kisiler nesnesi yaşa göre sıralanıyor ve 3. satırda bastırılıyor.

Programın çıktısı da yukarıda görüldüğü gibidir.

P.S. : Comparator (karşılaştırıcı) arayüzünü öğrenmeniz Comparable (karşılaştırabilir) arayüzü konusunu pekiştirmenizde fayda sağlayacaktır.

NOT : Nesneye Yönelik Programlama’da sınıflarda çoğul isim kullanılmamalıdır. Örn : Insanlar ismi yerine Insan olmalıdır. Örnekte daha iyi anlaşılması ve kafa karıştırmaması için Insanlar kullanılmıştır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir