Java Karşılaştırıcı arayüzü Kullanıcı tanımlı bir sınıfın nesnelerini sıralamak için kullanılır.
Bu arayüz Java.util paketinde bulunur ve karşılaştırma(Object obj1,Object obj2) ve equals(Object element) olmak üzere 2 yöntem içerir.
Birden fazla sıralama dizisi sağlar; yani öğeleri herhangi bir veri üyesine (örneğin, kayıt numarası, ad, yaş veya başka herhangi bir şeye) göre sıralayabilirsiniz.
Java Karşılaştırıcı Arayüzü Yöntemleri
Yöntem | Tanım |
---|---|
public int karşılaştırma(Object obj1, Object obj2) | Birinci nesneyi ikinci nesneyle karşılaştırır. |
genel boole eşittir (Object obj) | Geçerli nesneyi belirtilen nesneyle karşılaştırmak için kullanılır. |
genel boole eşittir (Object obj) | Geçerli nesneyi belirtilen nesneyle karşılaştırmak için kullanılır. |
Yöntem | Tanım |
---|---|
int karşılaştırma(T o1, T o2) | Birinci nesneyi ikinci nesneyle karşılaştırır. |
statik | T türünden Karşılaştırılabilir sıralama anahtarını çıkaran ve bu sıralama anahtarına göre karşılaştırma yapan bir Karşılaştırıcı döndüren bir işlevi kabul eder. |
Statik Karşılaştırıcı karşılaştırması (Function keyExtractor, Comparator keyComparator) | T türünden bir sıralama anahtarı çıkaran bir işlevi kabul eder ve belirtilen Karşılaştırıcıyı kullanarak bu sıralama anahtarına göre karşılaştırma yapan bir Karşılaştırıcı döndürür. |
Statik Karşılaştırıcı karşılaştırmaDouble(ToDoubleFunction keyExtractor) | T türünden çift sıralama anahtarını çıkaran ve bu sıralama anahtarına göre karşılaştırma yapan bir Karşılaştırıcı döndüren bir işlevi kabul eder. |
Statik Karşılaştırıcı karşılaştırmaInt(ToIntFunction keyExtractor) | T türünden int sıralama anahtarını çıkaran ve bu sıralama anahtarına göre karşılaştırma yapan bir Karşılaştırıcı döndüren bir işlevi kabul eder. |
Statik Karşılaştırıcı karşılaştırmaLong(ToLongFunction keyExtractor) | T türünden uzun bir sıralama anahtarı çıkaran ve bu sıralama anahtarına göre karşılaştırma yapan bir Karşılaştırıcı döndüren bir işlevi kabul eder. |
boole eşittir (Nesne nesnesi) | Geçerli nesneyi belirtilen nesneyle karşılaştırmak için kullanılır. |
statik | Karşılaştırılabilir nesneleri doğal sırayla karşılaştıran bir karşılaştırıcı döndürür. |
Statik Karşılaştırıcı nullsFirst(Karşılaştırıcı karşılaştırıcı) | Boş değeri boş olmayan öğelerden daha küçük olarak değerlendiren bir karşılaştırıcı döndürür. |
Statik Karşılaştırıcı nullsLast(Karşılaştırıcı karşılaştırıcı) | Boş değeri boş olmayan öğelerden daha büyük olarak değerlendiren bir karşılaştırıcı döndürür. |
varsayılan Karşılaştırıcı ters() | Sağlanan karşılaştırıcının ters sıralamasını içeren karşılaştırıcıyı döndürür. |
statik | Doğal sıralamanın tersini içeren karşılaştırıcıyı döndürür. |
varsayılan Karşılaştırıcı ThenComparing(Karşılaştırıcı diğer) | Başka bir karşılaştırıcıyla birlikte bir sözlüksel sıra karşılaştırıcısı döndürür. |
varsayılanKarşılaştırıcı, ardından Karşılaştırma (Fonksiyon tuşu Çıkarıcı) | Karşılaştırılabilir sıralama anahtarını çıkaran bir işleve sahip bir sözlüksel sıra karşılaştırıcısı döndürür. |
varsayılan Karşılaştırıcı ThenComparing(Function keyExtractor, Comparator keyComparator) | Verilen Karşılaştırıcıyla karşılaştırılacak bir anahtarı çıkaran bir işleve sahip bir sözlüksel sıra karşılaştırıcısı döndürür. |
varsayılan Karşılaştırıcı ardındanComparingDouble(ToDoubleFunction keyExtractor) | Çift sıralama anahtarını çıkaran bir işleve sahip bir sözlüksel sıra karşılaştırıcısı döndürür. |
varsayılan Karşılaştırıcı ThenComparingInt(ToIntFunction keyExtractor) | Bir int sıralama anahtarını çıkaran bir işleve sahip bir sözlüksel sıra karşılaştırıcısı döndürür. |
varsayılan Karşılaştırıcı ardındanComparingLong(ToLongFunction keyExtractor) | Uzun bir sıralama anahtarını çıkaran bir işleve sahip bir sözlüksel sıra karşılaştırıcısı döndürür. |
Java 8 Karşılaştırıcı Örneği
List'in elemanlarını yaşa ve isme göre sıralama örneğini görelim.
Dosya: Öğrenci.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
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)); //Sorting elements on the basis of name Comparator cm1=Comparator.comparing(Student::getName); Collections.sort(al,cm1); System.out.println('Sorting by Name'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } //Sorting elements on the basis of age Comparator cm2=Comparator.comparing(Student::getAge); Collections.sort(al,cm2); System.out.println('Sorting by Age'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27
Java 8 Karşılaştırıcı Örneği: nullsFirst() ve nullsLast() yöntemi
Burada null içeren öğelerin listesini de sıralıyoruz.
Dosya: Öğrenci.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Dosya: TestSort2.java
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,null,21)); Comparator cm1=Comparator.comparing(Student::getName,Comparator.nullsFirst(String::compareTo)); Collections.sort(al,cm1); System.out.println('Considers null to be less than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } Comparator cm2=Comparator.comparing(Student::getName,Comparator.nullsLast(String::compareTo)); Collections.sort(al,cm2); System.out.println('Considers null to be greater than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Considers null to be less than non-null 105 null 21 106 Ajay 27 101 Vijay 23 Considers null to be greater than non-null 106 Ajay 27 101 Vijay 23 105 null 21