Java Comparator-Schnittstelle wird verwendet, um die Objekte einer benutzerdefinierten Klasse zu ordnen.
Diese Schnittstelle befindet sich im Paket java.util und enthält die beiden Methoden „compare“ (Object obj1, Object obj2) und „equals“ (Object element).
Es bietet mehrere Sortierreihenfolgen, d. h. Sie können die Elemente auf der Grundlage eines beliebigen Datenelements sortieren, zum Beispiel nach Rollennummer, Name, Alter oder irgendetwas anderem.
Methoden der Java-Komparatorschnittstelle
Methode | Beschreibung |
---|---|
public int vergleichen (Objekt obj1, Objekt obj2) | Es vergleicht das erste Objekt mit dem zweiten Objekt. |
öffentlicher boolescher Wert gleicht (Objekt obj) | Es wird verwendet, um das aktuelle Objekt mit dem angegebenen Objekt zu vergleichen. |
öffentlicher boolescher Wert gleicht (Objekt obj) | Es wird verwendet, um das aktuelle Objekt mit dem angegebenen Objekt zu vergleichen. |
Methode | Beschreibung |
---|---|
int vergleichen(T o1, T o2) | Es vergleicht das erste Objekt mit dem zweiten Objekt. |
statisch | Es akzeptiert eine Funktion, die einen Comparable-Sortierschlüssel aus einem Typ T extrahiert, und gibt einen Komparator zurück, der anhand dieses Sortierschlüssels vergleicht. |
statischer Komparatorvergleich (Funktion keyExtractor, Komparator keyComparator) | Es akzeptiert eine Funktion, die einen Sortierschlüssel aus einem Typ T extrahiert, und gibt einen Komparator zurück, der anhand dieses Sortierschlüssels unter Verwendung des angegebenen Komparators vergleicht. |
statischer Komparator vergleichenDouble(ToDoubleFunction keyExtractor) | Es akzeptiert eine Funktion, die einen doppelten Sortierschlüssel aus einem Typ T extrahiert, und gibt einen Komparator zurück, der anhand dieses Sortierschlüssels vergleicht. |
statischer Komparator vergleichenInt(ToIntFunction keyExtractor) | Es akzeptiert eine Funktion, die einen int-Sortierschlüssel aus einem Typ T extrahiert, und gibt einen Komparator zurück, der anhand dieses Sortierschlüssels vergleicht. |
statischer Komparator vergleichenLong(ToLongFunction keyExtractor) | Es akzeptiert eine Funktion, die einen langen Sortierschlüssel aus einem Typ T extrahiert, und gibt einen Komparator zurück, der anhand dieses Sortierschlüssels vergleicht. |
boolean equals(Object obj) | Es wird verwendet, um das aktuelle Objekt mit dem angegebenen Objekt zu vergleichen. |
statisch | Es gibt einen Komparator zurück, der vergleichbare Objekte in natürlicher Reihenfolge vergleicht. |
statischer Komparator nullsFirst(Komparator Komparator) | Es gibt einen Komparator zurück, der Null als weniger als Nicht-Null-Elemente behandelt. |
statischer Komparator nullsLast(Komparator Komparator) | Es gibt einen Komparator zurück, der Null als größer als Nicht-Null-Elemente behandelt. |
Standardkomparator umgekehrt() | Es gibt einen Komparator zurück, der die umgekehrte Reihenfolge des bereitgestellten Komparators enthält. |
statisch | Es gibt einen Komparator zurück, der die Umkehrung der natürlichen Reihenfolge enthält. |
Standardkomparator thenComparing (Komparator andere) | Es gibt einen Komparator der lexikografischen Reihenfolge mit einem anderen Komparator zurück. |
StandardKomparator thenComparing(Funktion keyExtractor) | Es gibt einen lexikografischen Ordnungskomparator mit einer Funktion zurück, die einen vergleichbaren Sortierschlüssel extrahiert. |
Standardkomparator thenComparing (Funktion keyExtractor, Komparator keyComparator) | Es gibt einen Komparator lexikografischer Ordnung mit einer Funktion zurück, die einen Schlüssel extrahiert, der mit dem angegebenen Komparator verglichen werden soll. |
Standardkomparator thenComparingDouble(ToDoubleFunction keyExtractor) | Es gibt einen lexikografischen Ordnungskomparator mit einer Funktion zurück, die einen doppelten Sortierschlüssel extrahiert. |
Standardkomparator thenComparingInt(ToIntFunction keyExtractor) | Es gibt einen lexikografischen Ordnungskomparator mit einer Funktion zurück, die einen int-Sortierschlüssel extrahiert. |
Standardkomparator thenComparingLong(ToLongFunction keyExtractor) | Es gibt einen lexikografischen Ordnungskomparator mit einer Funktion zurück, die einen langen Sortierschlüssel extrahiert. |
Beispiel für einen Java 8-Komparator
Sehen wir uns das Beispiel der Sortierung der Elemente von List nach Alter und Name an.
Datei: 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; } }
Datei: 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-Komparator-Beispiel: nullsFirst()- und nullsLast()-Methode
Hier sortieren wir die Liste der Elemente, die auch Null enthalten.
Datei: 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; } }
Datei: 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