Java Comparable arayüzü, kullanıcı tanımlı sınıfın nesnelerini sıralamak için kullanılır. Bu arayüz Java.lang paketinde bulunur ve CompareTo(Object) adında yalnızca bir yöntem içerir. Yalnızca tek bir sıralama sırası sağlar, yani öğeleri yalnızca tek veri üyesine göre sıralayabilirsiniz. Örneğin rollno, isim, yaş veya başka herhangi bir şey olabilir.
CompareTo(Object obj) yöntemi
public int CompareTo(Object obj): Geçerli nesneyi belirtilen nesneyle karşılaştırmak için kullanılır. Geri dönüyor
- pozitif tam sayı, eğer geçerli nesne belirtilen nesneden büyükse.
- negatif tam sayı, eğer geçerli nesne belirtilen nesneden küçükse.
- geçerli nesne belirtilen nesneye eşitse sıfır.
Unsurlarını şu şekilde sıralayabiliriz:
- Dize nesneleri
- Sarmalayıcı sınıfı nesneleri
- Kullanıcı tanımlı sınıf nesneleri
Koleksiyonlar sınıfı
Koleksiyonlar sınıf, koleksiyonların öğelerini sıralamak için statik yöntemler sağlar. Koleksiyon elemanları Set veya Map ise TreeSet veya TreeMap'i kullanabiliriz. Ancak List'in elemanlarını sıralayamıyoruz. Koleksiyonlar sınıfı, Liste türü öğelerin öğelerini sıralamak için yöntemler sağlar.
Liste öğelerini sıralamak için Koleksiyon Yöntemi sınıfı
genel geçersiz sıralama (Liste listesi): List'in elemanlarını sıralamak için kullanılır. Liste öğeleri Karşılaştırılabilir türde olmalıdır.
Not: String sınıfı ve Wrapper sınıfları varsayılan olarak Karşılaştırılabilir arayüzü uygular. Dolayısıyla, dize veya sarmalayıcı sınıflarının nesnelerini bir listede, kümede veya haritada saklarsanız, varsayılan olarak Karşılaştırılabilir olacaktır.
Java Karşılaştırılabilir Örneği
Liste öğelerini yaşa göre sıralayan Karşılaştırılabilir arayüz örneğini görelim.
Dosya: Öğrenci.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } }
Dosya: TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
Java Karşılaştırılabilir Örnek: ters sıra
Liste öğelerini yaşa göre tersten sıralayan Comparable arayüzünün aynı örneğini görelim.
Dosya: Öğrenci.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age<st.age) return 1; else -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21