Comparateur Lambda en Java

Haider Ali 12 octobre 2023
Comparateur Lambda en Java

Ce guide abordera les comparateurs lambda dans le langage de programmation Java.

Nous devons comprendre la compréhension de base de Lambda pour comprendre la fonction de comparateur. Plongeons dans ce guide.

Comparateur Lambda en Java

Une expression lambda est un bloc de code acceptant des paramètres et renvoyant une valeur.

Les expressions lambda sont similaires aux méthodes. Cependant, elles n’ont pas besoin d’un nom comme les méthodes et elles peuvent être implémentées directement dans le corps d’une méthode.

L’expression lambda est une étape vers la programmation fonctionnelle. Les expressions lambda ressemblent approximativement à une fonction fléchée en JavaScript. Voici la syntaxe des fonctions lambda.

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

Voyons le premier exemple de lambda.

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............

Le code ci-dessus affiche la liste des tableaux. Maintenant que vous avez vu la syntaxe lambda, regardons le comparateur lambda.

L’interface Comparator<T> est une interface fonctionnelle (expression lambda) et peut être utilisée comme cible d’affectation pour une expression lambda ou une référence de méthode. Une fonction de comparaison est utilisée pour ordonner des collections(arraylist) d’objets.

Les comparateurs peuvent être passés à une méthode de tri (Collections.sort ou Arrays.sort). Nous utiliserons ces méthodes pour trier l’ensemble de données défini.

Jetez un oeil au code suivant.

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

Nous avons défini un ensemble de données comportant un nom, un âge et un salaire dans l’exemple de code. Nous pouvons soit trier ces données par âge ou par salaire.

Voyons comment l’expression lambda nous aide à cet égard.

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);
}

Il existe une fonctionnalité intégrée définie pour le comparateur. Nous remplaçons cela en déployant notre logique de comparaison des âges et de tri des données par âge.

Plus tard, nous transmettons simplement les employés comme paramètres dans lambda. Nous avons défini la fonctionnalité en comparant les âges des deux paramètres (employés).

Tous les codes ci-dessus sont des morceaux du code complet ci-dessous. Vous devez ajouter des bibliothèques et toutes les classes pour les exécuter.

Alors, exécutez le code suivant.

le code complet

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;
  }
}
Auteur: 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