Java Comparator interface bruges til at bestille objekterne i en brugerdefineret klasse.
Denne grænseflade findes i pakken java.util og indeholder 2 metoder compare(Object obj1,Object obj2) og equals(Object element).
Det giver flere sorteringssekvenser, dvs. du kan sortere elementerne på basis af ethvert datamedlem, for eksempel rollno, navn, alder eller noget andet.
Metoder til Java Comparator Interface
Metode | Beskrivelse |
---|---|
public int compare(Object obj1, Object obj2) | Den sammenligner det første objekt med det andet objekt. |
offentlig boolesk lig (Object obj) | Det bruges til at sammenligne det aktuelle objekt med det angivne objekt. |
offentlig boolesk lig (Object obj) | Det bruges til at sammenligne det aktuelle objekt med det angivne objekt. |
Metode | Beskrivelse |
---|---|
int sammenligne(T o1, T o2) | Den sammenligner det første objekt med det andet objekt. |
statisk | Den accepterer en funktion, der uddrager en sammenlignelig sorteringsnøgle fra en type T, og returnerer en komparator, der sammenligner med den sorteringsnøgle. |
statisk komparatorsammenligning(FunktionstastExtractor, ComparatorkeyComparator) | Den accepterer en funktion, der uddrager en sorteringsnøgle fra en type T, og returnerer en komparator, der sammenligner med den sorteringsnøgle ved hjælp af den angivne komparator. |
static Comparator comparingDouble(ToDoubleFunction keyExtractor) | Den accepterer en funktion, der uddrager en dobbeltsorteringsnøgle fra en type T, og returnerer en komparator, der sammenligner med denne sorteringsnøgle. |
statisk Comparator comparingInt(ToIntFunction keyExtractor) | Den accepterer en funktion, der uddrager en int-sorteringsnøgle fra en type T, og returnerer en komparator, der sammenligner med den sorteringsnøgle. |
statisk komparator sammenlignerLang(ToLongFunction keyExtractor) | Den accepterer en funktion, der uddrager en lang sorteringsnøgle fra en type T, og returnerer en komparator, der sammenligner med den sorteringsnøgle. |
boolesk lig (Objekt obj) | Det bruges til at sammenligne det aktuelle objekt med det angivne objekt. |
statisk | Det returnerer en komparator, der sammenligner sammenlignelige objekter i naturlig rækkefølge. |
static Comparator nullsFirst(Comparator comparator) | Det returnerer en komparator, der behandler nul til at være mindre end ikke-nul elementer. |
static Comparator nullsLast(Comparator komparator) | Det returnerer en komparator, der behandler nul til at være større end ikke-nul elementer. |
standard komparator omvendt() | Den returnerer komparator, der indeholder omvendt rækkefølge af den leverede komparator. |
statisk | Det returnerer komparator, der indeholder omvendt af naturlig rækkefølge. |
default Comparator thenComparing(Comparator other) | Det returnerer en komparator i leksikografisk orden med en anden komparator. |
StandardComparator thenComparing(Function keyExtractor) | Det returnerer en komparator med leksikografisk orden med en funktion, der uddrager en sammenlignelig sorteringsnøgle. |
standard Comparator thenComparing(Function keyExtractor, Comparator keyComparator) | Den returnerer en komparator i leksikografisk orden med en funktion, der uddrager en nøgle, der skal sammenlignes med den givne komparator. |
standard Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | Det returnerer en leksikografisk rækkefølge-komparator med en funktion, der uddrager en dobbeltsorteringsnøgle. |
standard Comparator thenComparingInt(ToIntFunction keyExtractor) | Det returnerer en leksikografisk rækkefølge-komparator med en funktion, der uddrager en int-sorteringsnøgle. |
standard Comparator thenComparingLong(ToLongFunction keyExtractor) | Det returnerer en leksikografisk rækkefølge-komparator med en funktion, der uddrager en lang sorteringsnøgle. |
Java 8 komparator eksempel
Lad os se eksemplet med at sortere elementerne i List på basis af 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() metode
Her sorterer vi listen over elementer, der også indeholder 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