Java Comparator-grensesnitt brukes til å bestille objektene til en brukerdefinert klasse.
Dette grensesnittet finnes i pakken java.util og inneholder 2 metoder compare(Object obj1,Object obj2) og equals(Object element).
Det gir flere sorteringssekvenser, det vil si at du kan sortere elementene på grunnlag av et datamedlem, for eksempel rollno, navn, alder eller noe annet.
Metoder for Java Comparator Interface
Metode | Beskrivelse |
---|---|
public int compare(Object obj1, Object obj2) | Den sammenligner det første objektet med det andre objektet. |
offentlig boolsk lik(Object obj) | Den brukes til å sammenligne gjeldende objekt med det angitte objektet. |
offentlig boolsk lik(Object obj) | Den brukes til å sammenligne gjeldende objekt med det angitte objektet. |
Metode | Beskrivelse |
---|---|
int compare(T o1, T o2) | Den sammenligner det første objektet med det andre objektet. |
statisk | Den godtar en funksjon som trekker ut en sammenlignbar sorteringsnøkkel fra en type T, og returnerer en komparator som sammenligner med den sorteringsnøkkelen. |
statisk komparator-sammenligning (FunksjonstastExtractor, Comparator keyComparator) | Den godtar en funksjon som trekker ut en sorteringsnøkkel fra en type T, og returnerer en komparator som sammenligner med den sorteringsnøkkelen ved å bruke den spesifiserte komparatoren. |
static Comparator comparingDouble(ToDoubleFunction keyExtractor) | Den godtar en funksjon som trekker ut en dobbel sorteringsnøkkel fra en type T, og returnerer en komparator som sammenligner med den sorteringsnøkkelen. |
static Comparator comparingInt(ToIntFunction keyExtractor) | Den godtar en funksjon som trekker ut en int-sorteringsnøkkel fra en type T, og returnerer en komparator som sammenligner med den sorteringsnøkkelen. |
statisk komparator sammenlignerLong(ToLongFunction keyExtractor) | Den godtar en funksjon som trekker ut en lang sorteringsnøkkel fra en type T, og returnerer en komparator som sammenligner med den sorteringsnøkkelen. |
boolsk lik(Objekt obj) | Den brukes til å sammenligne gjeldende objekt med det angitte objektet. |
statisk | Den returnerer en komparator som sammenligner sammenlignbare objekter i naturlig rekkefølge. |
statisk komparator nullsFirst(komparator komparator) | Den returnerer en komparator som behandler null til å være mindre enn ikke-null-elementer. |
statisk komparator nullsLast(komparator komparator) | Den returnerer en komparator som behandler null for å være større enn ikke-null-elementer. |
standard komparator reversert() | Den returnerer komparator som inneholder omvendt rekkefølge av den medfølgende komparatoren. |
statisk | Den returnerer komparator som inneholder motsatt av naturlig rekkefølge. |
standard Comparator thenComparing(Comparator other) | Den returnerer en komparator med leksikografisk rekkefølge med en annen komparator. |
misligholdeComparator thenComparing(Function keyExtractor) | Den returnerer en komparator med leksikografisk rekkefølge med en funksjon som trekker ut en sammenlignbar sorteringsnøkkel. |
standard Comparator thenComparing(Function keyExtractor, Comparator keyComparator) | Den returnerer en komparator med leksikografisk rekkefølge med en funksjon som trekker ut en nøkkel som skal sammenlignes med den gitte komparatoren. |
standard Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | Den returnerer en komparator med leksikografisk rekkefølge med en funksjon som trekker ut en dobbeltsorteringsnøkkel. |
standard Comparator thenComparingInt(ToIntFunction keyExtractor) | Den returnerer en komparator med leksikografisk rekkefølge med en funksjon som trekker ut en int sorteringsnøkkel. |
standard Comparator thenComparingLong(ToLongFunction keyExtractor) | Den returnerer en komparator med leksikografisk rekkefølge med en funksjon som trekker ut en lang sorteringsnøkkel. |
Java 8 komparator eksempel
La oss se eksemplet med å sortere elementene i List på grunnlag av alder og navn.
Fil: 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; } }
Fil: 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 Eksempel: nullsFirst() og nullsLast() metoden
Her sorterer vi listen over elementer som også inneholder null.
Fil: 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; } }
Fil: 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