Java Comparator-gränssnitt används för att ordna objekten i en användardefinierad klass.
Detta gränssnitt finns i paketet java.util och innehåller 2 metoder compare(Object obj1,Object obj2) och equals(Object element).
Det tillhandahåller flera sorteringssekvenser, det vill säga du kan sortera elementen på basis av vilken datamedlem som helst, till exempel rollno, namn, ålder eller något annat.
Metoder för Java Comparator Interface
Metod | Beskrivning |
---|---|
public int compare(Object obj1, Object obj2) | Den jämför det första objektet med det andra objektet. |
offentlig boolesk lika med(Object obj) | Den används för att jämföra det aktuella objektet med det angivna objektet. |
offentlig boolesk lika med(Object obj) | Den används för att jämföra det aktuella objektet med det angivna objektet. |
Metod | Beskrivning |
---|---|
int compare(T o1, T o2) | Den jämför det första objektet med det andra objektet. |
statisk | Den accepterar en funktion som extraherar en jämförbar sorteringsnyckel från en typ T och returnerar en komparator som jämför med den sorteringsnyckeln. |
statisk Comparator comparing (FunktionsnyckelExtractor, Comparator KeyComparator) | Den accepterar en funktion som extraherar en sorteringsnyckel från en typ T och returnerar en komparator som jämför med den sorteringsnyckeln med den angivna komparatorn. |
static Comparator comparingDouble(ToDoubleFunction keyExtractor) | Den accepterar en funktion som extraherar en dubbelsorteringsnyckel från en typ T och returnerar en Comparator som jämför med den sorteringsnyckeln. |
static Comparator comparingInt(ToIntFunction keyExtractor) | Den accepterar en funktion som extraherar en int-sorteringsnyckel från en typ T och returnerar en Comparator som jämför med den sorteringsnyckeln. |
static Comparator comparingLong(ToLongFunction keyExtractor) | Den accepterar en funktion som extraherar en lång sorteringsnyckel från en typ T och returnerar en komparator som jämför med den sorteringsnyckeln. |
boolesk lika med(Objekt obj) | Den används för att jämföra det aktuella objektet med det angivna objektet. |
statisk | Den returnerar en komparator som jämför jämförbara objekt i naturlig ordning. |
static Comparator nullsFirst(Comparator comparator) | Den returnerar en komparator som behandlar att null är mindre än icke-nullelement. |
static Comparator nullsLast(Comparator comparator) | Den returnerar en komparator som behandlar null för att vara större än icke-nullelement. |
default Comparator reversed() | Den returnerar komparator som innehåller omvänd ordning av den medföljande komparatorn. |
statisk | Den returnerar komparator som innehåller omvänd naturlig ordning. |
default Comparator thenComparing(Comparator other) | Den returnerar en komparator av lexikografisk ordning med en annan komparator. |
standardComparator thenComparing(Function keyExtractor) | Den returnerar en komparator med lexikografisk ordning med en funktion som extraherar en jämförbar sorteringsnyckel. |
standard Comparator thenComparing(Function keyExtractor, Comparator keyComparator) | Den returnerar en komparator av lexikografisk ordning med en funktion som extraherar en nyckel som ska jämföras med den givna komparatorn. |
standard Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | Den returnerar en lexikografisk ordningskomparator med en funktion som extraherar en dubbelsorteringsnyckel. |
standard Comparator thenComparingInt(ToIntFunction keyExtractor) | Den returnerar en komparator med lexikografisk ordning med en funktion som extraherar en int sort-nyckel. |
standard Comparator thenComparingLong(ToLongFunction keyExtractor) | Den returnerar en lexikografisk ordningskomparator med en funktion som extraherar en lång sorteringsnyckel. |
Java 8 Comparator Exempel
Låt oss se exemplet med att sortera elementen i List på basis av ålder och namn.
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 Exempel: metoden nullsFirst() och nullsLast().
Här sorterar vi listan med element som också innehåller 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