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.sort
或 Arrays.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;
}
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。