Lambda-Komparator in Java

Haider Ali 12 Oktober 2023
Lambda-Komparator in Java

Dieser Leitfaden befasst sich mit den Lambda-Komparatoren in der Programmiersprache Java.

Wir müssen das grundlegende Verständnis von Lambda verstehen, um die Komparatorfunktion zu verstehen. Lassen Sie uns in diesen Leitfaden eintauchen.

Lambda-Komparator in Java

Ein Lambda-Ausdruck ist ein Codeblock, der Parameter akzeptiert und einen Wert zurückgibt.

Lambda-Ausdrücke ähneln Methoden. Sie benötigen jedoch keinen Namen wie Methoden und können direkt im Hauptteil einer Methode implementiert werden.

Der Lambda-Ausdruck ist ein Schritt in Richtung funktionaler Programmierung. Lambda-Ausdrücke sind ungefähr wie eine Pfeilfunktion in JavaScript. Im Folgenden finden Sie die Syntax der Lambda-Funktionen.

(parameter) -> { /*statements Here*/
}
// Lambda Expressions With Single Parameter......
(parameter1, parameter2) -> { /*statements Here*/
}
// Lambda Expressions With two Parameter......

Sehen wir uns das erste Beispiel von Lambda an.

List<Integer> numbers = new ArrayList<Integer>(); // Example Array list
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
// e.g Lambda Expressions With No Parameter......
Consumer<Integer> cons = (index) -> {
  System.out.println(index);
};
numbers.forEach(cons);
// Lambda Expression End Here............

Der obige Code zeigt die Array-Liste an. Nachdem Sie nun die Lambda-Syntax gesehen haben, schauen wir uns den Lambda-Komparator an.

Die Schnittstelle Comparator<T> ist eine funktionale (Lambda-Ausdruck) Schnittstelle und kann als Zuweisungsziel für einen Lambda-Ausdruck oder eine Methodenreferenz verwendet werden. Eine Vergleichsfunktion wird zum Ordnen von Sammlungen (Arraylist) von Objekten verwendet.

Vergleicher können an eine Sortiermethode (Collections.sort oder Arrays.sort) übergeben werden. Wir verwenden diese Methoden, um den gesamten definierten Datensatz zu sortieren.

Sehen Sie sich den folgenden Code an.

List<Employee> totalEmployees = new ArrayList<Employee>();

totalEmployees.add(new Employee(24, "RavigHambole", 5000));
totalEmployees.add(new Employee(26, "Bill Gates", 400));
totalEmployees.add(new Employee(34, "Mark Zukerberg", 40000));
totalEmployees.add(new Employee(56, "Sundar Picahi", 300));
totalEmployees.add(new Employee(34, "Potus", 1220));
totalEmployees.add(new Employee(23, "Obama", 5032));
totalEmployees.add(new Employee(15, "Halary Clinton", 5030));
totalEmployees.add(new Employee(23, "David", 500320));
// Now Compartor Method To Sort According to Age......
System.out.println("Before Sort");
for (Employee temp : totalEmployees) {
  System.out.println("Name :" + temp.Name);
  System.out.println("Age :" + temp.age);
  System.out.println("Salary :" + temp.Salary);
}
// simply defined and displayed the array list

Im Codebeispiel haben wir einen Datensatz mit Name, Alter und Gehalt definiert. Wir können diese Daten entweder nach Alter oder nach Gehalt sortieren.

Mal sehen, wie uns der Lambda-Ausdruck dabei hilft.

Comparator<Employee> ee = new Comparator<Employee>() {
  // Overriding Comparator method to sort according to age
  @Override
  public int compare(Employee o1, Employee o2) {
    return o2.age - o1.age;
  }
};
// Now Sorting the Method.... According to age
totalEmployees.sort((Employee o1, Employee o2) -> o1.age - o2.age);

System.out.println("After Sort by age..........");
for (Employee temp : totalEmployees) {
  System.out.println("Name :" + temp.Name);
  System.out.println("Age :" + temp.age);
  System.out.println("Salary" + temp.Salary);
}

Für den Komparator ist eine integrierte Funktionalität definiert. Wir setzen dies außer Kraft, indem wir unsere Logik anwenden, die Altersgruppen zu vergleichen und den Datensatz nach Alter zu sortieren.

Später übergeben wir die Mitarbeiter einfach als Parameter in Lambda. Wir haben die Funktionalität definiert, indem wir das Alter beider Parameter (Mitarbeiter) verglichen haben.

Alle oben genannten Codes sind Teile des vollständigen Codes unten. Sie müssen Bibliotheken und alle Klassen hinzufügen, um sie auszuführen.

Führen Sie also den folgenden Code aus.

der vollständige Code

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    List<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> cons = (index) -> {
      System.out.println(index);
    };
    numbers.forEach(cons);

    List<Employee> totalEmployees = new ArrayList<Employee>();

    totalEmployees.add(new Employee(24, "RavigHambole", 5000));
    totalEmployees.add(new Employee(26, "Bill Gates", 400));
    totalEmployees.add(new Employee(34, "Mark Zukerberg", 40000));
    totalEmployees.add(new Employee(56, "Sundar Picahi", 300));
    totalEmployees.add(new Employee(34, "Potus", 1220));
    totalEmployees.add(new Employee(23, "Obama", 5032));
    totalEmployees.add(new Employee(15, "Halary Clinton", 5030));
    totalEmployees.add(new Employee(23, "David", 500320));
    // Now Compartor Method To Sort According to Age......
    System.out.println("Before Sort");
    for (Employee temp : totalEmployees) {
      System.out.println("Name :" + temp.Name);
      System.out.println("Age :" + temp.age);
      System.out.println("Salary :" + temp.Salary);
    }
    Comparator<Employee> ee = new Comparator<Employee>() {
      // Overirding Compartor method to sort according to
      // age
      @Override
      public int compare(Employee o1, Employee o2) {
        return o2.age - o1.age;
      }
    };
    totalEmployees.sort(ee);
    // Now Sorting the Method.... According to age
    totalEmployees.sort((Employee o1, Employee o2) -> o1.age - o2.age);

    System.out.println("After Sort by age..........");
    for (Employee temp : totalEmployees) {
      System.out.println("Name :" + temp.Name);
      System.out.println("Age :" + temp.age);
      System.out.println("Salary" + temp.Salary);
    }
  }
}

class Employee { // Employee Class..
  public int age;
  public String Name;
  public int Salary;
  Employee(int a, String Na, int Sa) {
    this.age = a;
    this.Name = Na;
    this.Salary = Sa;
  }
}
Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn