Comparateur anonyme en Java

Sheeraz Gul 12 octobre 2023
  1. Comparateur anonyme utilisant une classe anonyme en Java
  2. Comparateur anonyme utilisant l’expression Lambda en Java
Comparateur anonyme en Java

En Java, nous pouvons créer un comparateur anonyme de deux manières : l’une utilise la classe anonyme et l’autre utilise des expressions Lambda. Ce tutoriel montre comment créer un comparateur anonyme en Java.

Comparateur anonyme utilisant une classe anonyme en Java

Pour créer un comparateur anonyme avec une classe anonyme, suivez les étapes ci-dessous.

  • Tout d’abord, créez une classe définie par l’utilisateur.
  • Ensuite, créez une autre classe qui sera utilisée pour l’objet comparateur. Cette classe comprendra une classe collection avec la méthode sort.
  • Maintenant, en utilisant la classe anonyme, créez l’objet comparateur puis implémentez la méthode de comparaison à l’aide de l’objet comparateur.
  • La méthode Sort de la classe Collections sera appelée en passant l’objet.
  • Imprimez ou utilisez les informations triées selon vos besoins.

Essayons un exemple en Java basé sur les étapes ci-dessus.

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

Le code ci-dessus crée un comparateur anonyme pour la classe Employee et trie la liste Employee en fonction du salaire.

Production:

Name	Salary
---------------------
Shawn  =  5000.0
Jack  =  4500.0
Tina  =  4000.0
Jenny  =  3500.0
Mike  =  3000.0
Michelle  =  2500.0

Comparateur anonyme utilisant l’expression Lambda en Java

Pour créer un comparateur anonyme avec des expressions lambda, suivez les étapes ci-dessous.

  • Tout d’abord, créez une classe définie par l’utilisateur.
  • Ensuite, créez une autre classe qui sera utilisée pour l’objet comparateur. Cette classe comprendra une classe collection avec la méthode sort.
  • Maintenant, à l’aide des expressions lambda, créez l’interface de l’objet comparateur puis implémentez la méthode compare à l’aide de l’interface comparateur.
  • La méthode Sort de la classe Collections sera appelée en passant l’objet.
  • Imprimez ou utilisez les informations triées selon vos besoins.

Essayons un exemple en Java basé sur les étapes ci-dessus.

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

Le code ci-dessus va trier les Employee à l’aide d’expressions lambda dans un comparateur anonyme. Voir la sortie :

Name	Salary
---------------------
Shawn  =  5000.0
Jack  =  4500.0
Tina  =  4000.0
Jenny  =  3500.0
Mike  =  3000.0
Michelle  =  2500.0

Nous avons créé nos classes de données pour comprendre le problème, mais ces comparateurs peuvent également être facilement appliqués aux types intégrés.

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

Article connexe - Java Comparator