Java Comparator sučelje koristi se za naručivanje objekata korisnički definirane klase.
Ovo se sučelje nalazi u paketu java.util i sadrži 2 metode compare(Object obj1,Object obj2) i equals(Object element).
Omogućuje više sekvenci sortiranja, tj. možete sortirati elemente na temelju bilo kojeg člana podatka, na primjer, rollno, ime, dob ili bilo što drugo.
Metode Java Comparator sučelja
metoda | Opis |
---|---|
public int compare(Object obj1, Object obj2) | Uspoređuje prvi objekt s drugim objektom. |
public boolean equals (Object obj) | Koristi se za usporedbu trenutnog objekta s navedenim objektom. |
public boolean equals (Object obj) | Koristi se za usporedbu trenutnog objekta s navedenim objektom. |
metoda | Opis |
---|---|
int usporedi(T o1, T o2) | Uspoređuje prvi objekt s drugim objektom. |
statički | Prihvaća funkciju koja izdvaja Comparable ključ sortiranja iz tipa T i vraća Comparator koji uspoređuje prema tom ključu sortiranja. |
usporedba statičkog komparatora (Function keyExtractor, Comparator keyComparator) | Prihvaća funkciju koja izvlači ključ sortiranja iz tipa T i vraća komparator koji uspoređuje po tom ključu sortiranja koristeći navedeni komparator. |
statički komparator comparingDouble(ToDoubleFunction keyExtractor) | Prihvaća funkciju koja izvlači dvostruki ključ sortiranja iz tipa T i vraća Comparator koji uspoređuje prema tom ključu sortiranja. |
statički komparator comparingInt(ToIntFunction keyExtractor) | Prihvaća funkciju koja izvlači int ključ za sortiranje iz tipa T i vraća Comparator koji uspoređuje po tom ključu za sortiranje. |
statički komparator comparingLong(ToLongFunction keyExtractor) | Prihvaća funkciju koja izvlači dugi ključ za sortiranje iz tipa T i vraća Comparator koji uspoređuje po tom ključu za sortiranje. |
Boolean jednako (Object obj) | Koristi se za usporedbu trenutnog objekta s navedenim objektom. |
statički | Vraća komparator koji uspoređuje usporedive objekte u prirodnom redoslijedu. |
statički komparator nullsFirst(komparator komparator) | Vraća komparator koji tretira null kao manje od elemenata koji nisu null. |
statički komparator nullsLast(komparator komparator) | Vraća komparator koji tretira null kao veći od elemenata koji nisu nul. |
zadani komparator obrnut() | Vraća komparator koji sadrži obrnuti poredak navedenog komparatora. |
statički | Vraća komparator koji sadrži obrnuti redoslijed od prirodnog. |
default Comparator thenComparing(Comparator other) | Vraća komparator leksikografskog reda s drugim komparatorom. |
zadanoKomparator zatim Usporedba (Function keyExtractor) | Vraća komparator leksikografskog reda s funkcijom koja izdvaja ključ sortiranja Usporedivo. |
default Comparator thenComparing(Function keyExtractor, Comparator keyComparator) | Vraća usporednik leksikografskog reda s funkcijom koja izdvaja ključ koji se uspoređuje s danim usporednikom. |
default Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | Vraća komparator leksikografskog reda s funkcijom koja izdvaja ključ dvostrukog sortiranja. |
default Comparator thenComparingInt(ToIntFunction keyExtractor) | Vraća komparator leksikografskog reda s funkcijom koja izdvaja int ključ sortiranja. |
default Comparator thenComparingLong(ToLongFunction keyExtractor) | Vraća komparator leksikografskog reda s funkcijom koja izdvaja dugi ključ sortiranja. |
Primjer Java 8 komparatora
Pogledajmo primjer sortiranja elemenata Liste na temelju dobi i imena.
Datoteka: Student.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; } }
Datoteka: 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
Primjer Java 8 komparatora: metode nullsFirst() i nullsLast().
Ovdje sortiramo popis elemenata koji također sadrži null.
Datoteka: Student.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; } }
Datoteka: 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