logo

Java Karşılaştırılabilir arayüz

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:

  1. Dize nesneleri
  2. Sarmalayıcı sınıfı nesneleri
  3. 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,&apos;Vijay&apos;,23)); al.add(new Student(106,&apos;Ajay&apos;,27)); al.add(new Student(105,&apos;Jai&apos;,21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+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