Anonymer Komparator in Java
In Java können wir einen anonymen Komparator auf zwei Arten erstellen: Die eine verwendet die anonyme Klasse und die andere Lambda-Ausdrücke. Dieses Tutorial zeigt, wie Sie einen anonymen Komparator in Java erstellen.
Anonymer Komparator mit anonymer Klasse in Java
Führen Sie die folgenden Schritte aus, um einen anonymen Komparator mit einer anonymen Klasse zu erstellen.
-
Erstellen Sie zunächst eine benutzerdefinierte Klasse.
-
Erstellen Sie dann eine weitere Klasse, die für das Vergleichsobjekt verwendet wird. Diese Klasse wird eine
collection
-Klasse mit dersort
-Methode beinhalten. -
Erstellen Sie nun mit der anonymen Klasse das Vergleichsobjekt und implementieren Sie dann die Vergleichsmethode mit Hilfe des Vergleichsobjekts.
-
Die Methode
Sort
der KlasseCollections
wird durch Übergabe des Objekts aufgerufen. -
Drucken oder verwenden Sie die sortierten Informationen nach Bedarf.
Versuchen wir ein Beispiel in Java, das auf den obigen Schritten basiert.
package delftstack;
import java.util.*;
class Employee {
String name;
double salary;
Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
}
public class Anonymous_Comparator {
public static void main(String args[]) {
ArrayList<Employee> Employee_List = new ArrayList<Employee>();
Employee_List.add(new Employee("Mike", 3000));
Employee_List.add(new Employee("Michelle", 2500));
Employee_List.add(new Employee("Tina", 4000));
Employee_List.add(new Employee("Shawn", 5000));
Employee_List.add(new Employee("Jack", 4500));
Employee_List.add(new Employee("Jenny", 3500));
Collections.sort(Employee_List, new Comparator<Employee>() {
public int compare(Employee employee1, Employee employee2) {
if (employee1.salary < employee2.salary) {
return 1;
}
return -1;
}
});
System.out.println("Name\tSalary");
System.out.println("---------------------");
for (Employee Employee : Employee_List) {
System.out.println(Employee.name + " = " + Employee.salary);
}
}
}
Der obige Code erstellt einen anonymen Vergleicher für die Klasse Employee
und sortiert die Liste Employee
nach Gehalt.
Ausgabe:
Name Salary
---------------------
Shawn = 5000.0
Jack = 4500.0
Tina = 4000.0
Jenny = 3500.0
Mike = 3000.0
Michelle = 2500.0
Anonymer Komparator mit Lambda-Ausdruck in Java
Führen Sie die folgenden Schritte aus, um einen anonymen Komparator mit Lambda-Ausdrücken zu erstellen.
-
Erstellen Sie zunächst eine benutzerdefinierte Klasse.
-
Erstellen Sie dann eine weitere Klasse, die für das Vergleichsobjekt verwendet wird. Diese Klasse wird eine
collection
-Klasse mit dersort
-Methode beinhalten. -
Erstellen Sie nun mit Hilfe der Lambda-Ausdrücke das Comparator-Objekt-Interface und implementieren Sie dann die Methode
compare
mit Hilfe des Comparator-Interface. -
Die Methode
Sort
der KlasseCollections
wird durch Übergabe des Objekts aufgerufen. -
Drucken oder verwenden Sie die sortierten Informationen nach Bedarf.
Versuchen wir ein Beispiel in Java, das auf den obigen Schritten basiert.
package delftstack;
import java.util.*;
class Employee {
String name;
double salary;
Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
}
public class Anonymous_Comparator {
public static void main(String args[]) {
ArrayList<Employee> Employee_List = new ArrayList<Employee>();
Employee_List.add(new Employee("Mike", 3000));
Employee_List.add(new Employee("Michelle", 2500));
Employee_List.add(new Employee("Tina", 4000));
Employee_List.add(new Employee("Shawn", 5000));
Employee_List.add(new Employee("Jack", 4500));
Employee_List.add(new Employee("Jenny", 3500));
Collections.sort(Employee_List, (employee1, employee2) -> { // Using Lambda Expressions
if (employee1.salary < employee2.salary) {
return 1;
}
return -1;
});
System.out.println("Name\tSalary");
System.out.println("---------------------");
for (Employee Employee : Employee_List) {
System.out.println(Employee.name + " = " + Employee.salary);
}
}
}
Der obige Code sortiert den Employee
mithilfe von Lambda-Ausdrücken in einem anonymen Komparator. Siehe Ausgabe:
Name Salary
---------------------
Shawn = 5000.0
Jack = 4500.0
Tina = 4000.0
Jenny = 3500.0
Mike = 3000.0
Michelle = 2500.0
Wir haben unsere Datenklassen erstellt, um das Problem zu verstehen, aber diese Komparatoren können auch problemlos auf integrierte Typen angewendet werden.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook