Comparador Lambda en Java

Haider Ali 12 octubre 2023
Comparador Lambda en Java

Esta guía abordará los comparadores lambda en el lenguaje de programación Java.

Necesitamos comprender la comprensión básica de Lambda para comprender la función de comparación. Vamos a sumergirnos en esta guía.

Comparador Lambda en Java

Una expresión lambda es un bloque de código que acepta parámetros y devuelve un valor.

Las expresiones lambda son similares a los métodos. Sin embargo, no necesitan un nombre como los métodos y pueden implementarse directamente en el cuerpo de un método.

La expresión lambda es un paso hacia la programación funcional. Las expresiones lambda son aproximadamente como una función de flecha en JavaScript. A continuación se muestra la sintaxis de las funciones lambda.

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

Veamos el primer ejemplo 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............

El código anterior muestra la lista de arrays. Ahora que ha visto la sintaxis lambda, veamos el comparador lambda.

La interfaz Comparator<T> es una interfaz funcional (expresión lambda) y se puede utilizar como destino de asignación para una expresión lambda o una referencia de método. Se utiliza una función de comparación para ordenar collections(arraylist) de objetos.

Los comparadores se pueden pasar a un método de clasificación (Collections.sort o Arrays.sort). Usaremos estos métodos para ordenar todo el conjunto de datos definido.

Echa un vistazo al siguiente código.

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

Hemos definido un conjunto de datos con un nombre, edad y salario en el ejemplo de código. Podemos ordenar estos datos por edad o por salario.

Veamos cómo nos ayuda la expresión lambda en este sentido.

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

Hay una funcionalidad integrada definida para el comparador. Anulamos eso al implementar nuestra lógica de comparar las edades y clasificar los datos establecidos por edad.

Más tarde, simplemente estamos pasando los empleados como parámetros en lambda. Definimos la funcionalidad comparando las edades de ambos parámetros (empleados).

Todos los códigos anteriores son partes del código completo a continuación. Debe agregar bibliotecas y todas las clases para ejecutarlas.

Por lo tanto, ejecute el siguiente código.

El código completo

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