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