Comparador anónimo en Java

Sheeraz Gul 12 octubre 2023
  1. Comparador anónimo usando clase anónima en Java
  2. Comparador anónimo usando la expresión Lambda en Java
Comparador anónimo en Java

En Java, podemos crear un comparador anónimo de dos maneras: una usa la clase anónima y la otra usa expresiones Lambda. Este tutorial demuestra cómo crear un comparador anónimo en Java.

Comparador anónimo usando clase anónima en Java

Para crear un comparador anónimo con una clase anónima, siga los pasos a continuación.

  • En primer lugar, cree una clase definida por el usuario.
  • Luego, cree otra clase que se usará para el objeto comparador. Esta clase incluirá una clase collection con el método sort.
  • Ahora, utilizando la clase anónima, cree el objeto comparador y luego implemente el método de comparación con la ayuda del objeto comparador.
  • Se llamará al método Sort de la clase Collections pasando el objeto.
  • Imprima o utilice la información ordenada según sus necesidades.

Probemos un ejemplo en Java basado en los pasos anteriores.

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

El código anterior crea un comparador anónimo para la clase Employee y ordena la lista de Employee según el salario.

Producción :

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

Comparador anónimo usando la expresión Lambda en Java

Para crear un comparador anónimo con expresiones lambda, siga los pasos a continuación.

  • En primer lugar, cree una clase definida por el usuario.
  • Luego, cree otra clase que se usará para el objeto comparador. Esta clase incluirá una clase collection con el método sort.
  • Ahora, utilizando las expresiones lambda, cree la interfaz del objeto comparador y luego implemente el método compare con la ayuda de la interfaz del comparador.
  • Se llamará al método Sort de la clase Collections pasando el objeto.
  • Imprima o utilice la información ordenada según sus necesidades.

Probemos un ejemplo en Java basado en los pasos anteriores.

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

El código anterior ordenará el Employee usando expresiones lambda en un comparador anónimo. Ver salida:

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

Creamos nuestras clases de datos para comprender el problema, pero estos comparadores también se pueden aplicar fácilmente a tipos integrados.

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

Artículo relacionado - Java Comparator