Anonymer Komparator in Java

Anonymer Komparator in Java

  1. Anonymer Komparator mit anonymer Klasse in Java
  2. Anonymer Komparator mit Lambda-Ausdruck 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 der sort-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 Klasse Collections 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 der sort-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 Klasse Collections 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.

Author: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - Java Comparator

  • Comparable vs. Comparator in Java
  • Komparator in Java sortieren