Java Comparator käyttöliittymä käytetään järjestämään käyttäjän määrittämän luokan objektit.
Tämä käyttöliittymä löytyy java.util-paketista ja sisältää 2 menetelmää vertaa (Object obj1,Object obj2) ja equals (Object element).
Se tarjoaa useita lajittelusarjoja, eli voit lajitella elementit minkä tahansa tietojäsenen perusteella, esimerkiksi rollno, nimi, ikä tai jokin muu.
Java-vertailurajapinnan menetelmät
Menetelmä | Kuvaus |
---|---|
julkinen int vertaa (Object obj1, Object obj2) | Se vertaa ensimmäistä objektia toiseen objektiin. |
julkinen looginen yhtälö (Objektiobjekti) | Sitä käytetään nykyisen objektin vertaamiseen määritettyyn objektiin. |
julkinen looginen yhtälö (Objektiobjekti) | Sitä käytetään nykyisen objektin vertaamiseen määritettyyn objektiin. |
Menetelmä | Kuvaus |
---|---|
int vertaa (T o1, T o2) | Se vertaa ensimmäistä objektia toiseen objektiin. |
staattinen | Se hyväksyy funktion, joka poimii verrattavan lajitteluavaimen tyypistä T, ja palauttaa vertailun, joka vertaa tällä lajitteluavaimella. |
staattinen Comparator-vertailu (Function keyExtractor, Comparator keyComparator) | Se hyväksyy funktion, joka poimii lajitteluavaimen tyypistä T, ja palauttaa vertailijan, joka vertaa kyseisellä lajitteluavaimella määritettyä vertailijaa käyttäen. |
Static Comparator comparingDouble (ToDoubleFunction keyExtractor) | Se hyväksyy funktion, joka poimii kaksoislajitteluavaimen tyypistä T, ja palauttaa vertailun, joka vertaa tällä lajitteluavaimella. |
staattinen Comparator comparingInt(ToIntFunction keyExtractor) | Se hyväksyy funktion, joka poimii int-lajitteluavaimen tyypistä T, ja palauttaa vertailijan, joka vertaa tällä lajitteluavaimella. |
staattinen Comparator ComparingLong (ToLongFunction keyExtractor) | Se hyväksyy funktion, joka poimii pitkän lajitteluavaimen tyypistä T, ja palauttaa vertailun, joka vertaa tällä lajitteluavaimella. |
boolen yhtä kuin (Objektiobjekti) | Sitä käytetään nykyisen objektin vertaamiseen määritettyyn objektiin. |
staattinen | Se palauttaa vertailijan, joka vertaa vertailukelpoisia objekteja luonnollisessa järjestyksessä. |
staattinen Comparator nullsFirst(Comparator Comparator) | Se palauttaa vertailijan, joka käsittelee nollaa pienempänä kuin ei-nolla-elementtejä. |
staattinen Comparator nullsLast(vertailija) | Se palauttaa vertailijan, joka pitää nolla-arvoa suurempana kuin ei-nolla-elementit. |
oletusvertailija käännetty() | Se palauttaa vertailijan, joka sisältää toimitetun vertailijan käänteisen järjestyksen. |
staattinen | Se palauttaa vertailijan, joka sisältää käänteisen luonnollisen järjestyksen. |
oletusvertailija sittenVertailu (vertailija muu) | Se palauttaa leksikografisen järjestyksen vertailijan toisen vertailijan kanssa. |
oletuksenaVertailu ja vertaaminen (Funktion keyExtractor) | Se palauttaa leksikografisen järjestyksen vertailijan funktiolla, joka poimii vertailuavaimen. |
oletusvertailija sittenVertailu (Function keyExtractor, Comparator keyComparator) | Se palauttaa leksikografisen järjestyksen vertailijan, jossa on funktio, joka poimii avaimen, jota voidaan verrata annettuun vertailijaan. |
oletuksena Comparator thenComparingDouble (ToDoubleFunction keyExtractor) | Se palauttaa leksikografisen järjestyksen vertailijan funktiolla, joka poimii kaksoislajitteluavaimen. |
oletusvertailija sittenComparingInt(ToIntFunction keyExtractor) | Se palauttaa leksikografisen järjestyksen vertailijan funktiolla, joka poimii int-lajitteluavaimen. |
oletuksena Comparator thenComparingLong(ToLongFunction keyExtractor) | Se palauttaa leksikografisen järjestyksen vertailijan funktiolla, joka poimii pitkän lajitteluavaimen. |
Esimerkki Java 8 -vertailusta
Katsotaanpa esimerkkiä Listan elementtien lajittelusta iän ja nimen perusteella.
Tiedosto: 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; } }
Tiedosto: 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 Comparator Esimerkki: nullsFirst() ja nullsLast() -metodi
Täällä lajittelemme luettelon elementeistä, jotka sisältävät myös null.
Tiedosto: 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; } }
Tiedosto: 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