Java Comparator-interface wordt gebruikt om de objecten van een door de gebruiker gedefinieerde klasse te ordenen.
Deze interface is te vinden in het java.util-pakket en bevat twee methoden: Compare (Object obj1, Object obj2) en equals (Object-element).
Het biedt meerdere sorteerreeksen, dat wil zeggen dat u de elementen kunt sorteren op basis van elk gegevenslid, bijvoorbeeld rolnummer, naam, leeftijd of iets anders.
Methoden van de Java-vergelijkingsinterface
Methode | Beschrijving |
---|---|
public int Compare(Object obj1, Object obj2) | Het vergelijkt het eerste object met het tweede object. |
public boolean is gelijk aan (Object obj) | Het wordt gebruikt om het huidige object te vergelijken met het opgegeven object. |
public boolean is gelijk aan (Object obj) | Het wordt gebruikt om het huidige object te vergelijken met het opgegeven object. |
Methode | Beschrijving |
---|---|
int vergelijken(T o1, T o2) | Het vergelijkt het eerste object met het tweede object. |
statisch | Het accepteert een functie die een vergelijkbare sorteersleutel uit een type T haalt, en retourneert een comparator die vergelijkt met die sorteersleutel. |
statisch Comparator vergelijken (Functie keyExtractor, Comparator keyComparator) | Het accepteert een functie die een sorteersleutel uit een type T haalt, en retourneert een Comparator die vergelijkt met die sorteersleutel met behulp van de opgegeven Comparator. |
statische comparator vergelijkenDouble(ToDoubleFunction keyExtractor) | Het accepteert een functie die een dubbele sorteersleutel uit een type T haalt, en retourneert een Comparator die vergelijkt met die sorteersleutel. |
statische comparator CompareInt(ToIntFunction keyExtractor) | Het accepteert een functie die een int-sorteersleutel uit een type T haalt, en retourneert een Comparator die vergelijkt met die sorteersleutel. |
statische comparator vergelijkenLong(ToLongFunction keyExtractor) | Het accepteert een functie die een lange sorteersleutel uit een type T haalt, en retourneert een Comparator die vergelijkt met die sorteersleutel. |
Booleaanse waarde is gelijk aan(Object obj) | Het wordt gebruikt om het huidige object te vergelijken met het opgegeven object. |
statisch | Het retourneert een comparator die vergelijkbare objecten in natuurlijke volgorde vergelijkt. |
statische Comparator nullsFirst(Comparator-comparator) | Het retourneert een comparator die null als minder dan niet-null-elementen beschouwt. |
statische Comparator nullsLast(Comparator-comparator) | Het retourneert een comparator die nul als groter beschouwt dan niet-nul-elementen. |
standaardvergelijker omgekeerd() | Het retourneert een comparator die de omgekeerde volgorde van de opgegeven comparator bevat. |
statisch | Het retourneert een comparator die het omgekeerde van de natuurlijke ordening bevat. |
standaardvergelijker thenComparing(vergelijker anders) | Het retourneert een comparator van de lexicografische volgorde met een andere comparator. |
standaardComparator en vervolgensVergelijken (FunctietoetsExtractor) | Het retourneert een comparator van de lexicografische volgorde met een functie die een vergelijkbare sorteersleutel extraheert. |
standaard Comparator thenComparing (FunctietoetsExtractor, Comparator-toetsComparator) | Het retourneert een comparator van lexicografische volgorde met een functie die een sleutel extraheert om te vergelijken met de gegeven comparator. |
standaard Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | Het retourneert een vergelijker van de lexicografische volgorde met een functie die een dubbele sorteersleutel extraheert. |
standaard Comparator thenComparingInt(ToIntFunction keyExtractor) | Het retourneert een vergelijker van de lexicografische volgorde met een functie die een int-sorteersleutel extraheert. |
standaard Comparator thenComparingLong(ToLongFunction keyExtractor) | Het retourneert een vergelijker van de lexicografische volgorde met een functie die een lange sorteersleutel extraheert. |
Java 8-vergelijkingsvoorbeeld
Laten we eens kijken naar het voorbeeld van het sorteren van de elementen van Lijst op basis van leeftijd en naam.
Bestand: 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; } }
Bestand: 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 Voorbeeld: nullsFirst() en nullsLast() methode
Hier sorteren we de lijst met elementen die ook null bevatten.
Bestand: 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; } }
Bestand: 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