Java 中的 Lambda 比较器

本指南将处理 Java 编程语言中的 lambda 比较器。

我们需要了解 Lambda 的基本理解才能理解比较器函数。让我们深入了解本指南。

Java 中的 Lambda 比较器

lambda 表达式是一个接受参数并返回值的代码块。

Lambda 表达式类似于方法。但是,它们不需要像方法这样的名称,它们可以直接在方法体中实现。

Lambda 表达式是朝着函数式编程迈出的一步。Lambda 表达式类似于 JavaScript 中的箭头函数。以下是 lambda 函数的语法。

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

让我们看一下 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............

上面的代码显示了数组列表。现在你已经了解了 lambda 语法,让我们来看看 lambda 比较器。

接口 Comparator<T> 是一个函数式(lambda 表达式)接口,可用作 lambda 表达式或方法引用的赋值目标。比较函数用于对对象的 collections(arraylist) 进行排序。

比较器可以传递给排序方法(Collections.sortArrays.sort)。我们将使用这些方法对定义的整个数据集进行排序。

看看下面的代码。

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

我们在代码示例中定义了一个包含姓名、年龄和薪水的数据集。我们可以按年龄或按薪水对这些数据进行排序。

让我们看看 lambda 表达式在这方面如何帮助我们。

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

为比较器定义了一个内置功能。我们通过部署比较年龄和按年龄对数据集进行排序的逻辑来覆盖它。

稍后,我们只是将员工作为参数传递给 lambda。我们通过比较两个参数(员工)的年龄来定义功能。

以上所有代码都是下面完整代码的一部分。你需要添加库和所有类来运行它们。

因此,运行以下代码。

完整代码

import java.util.ArrayList;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.ArrayList;
import java.util.List;
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;
   }
}