Java 中的匿名比较器
在 Java 中,我们可以通过两种方式创建匿名比较器:一种使用匿名类,另一种使用 Lambda 表达式。本教程演示了如何在 Java 中创建匿名比较器。
在 Java 中使用匿名类的匿名比较器
要使用匿名类创建匿名比较器,请按照以下步骤操作。
-
首先,创建一个用户定义的类。
-
然后,创建另一个将用于比较器对象的类。这个类将包括一个带有
sort
方法的collection
类。 -
现在,使用匿名类,创建比较器对象,然后在比较器对象的帮助下实现比较方法。
-
Collections
类中的Sort
方法将通过传递对象来调用。 -
根据需要打印或使用分类信息。
让我们根据上述步骤在 Java 中尝试一个示例。
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);
}
}
}
上面的代码为 Employee
类创建了一个匿名比较器,并根据薪水对 Employee
列表进行排序。
见输出:
Name Salary
---------------------
Shawn = 5000.0
Jack = 4500.0
Tina = 4000.0
Jenny = 3500.0
Mike = 3000.0
Michelle = 2500.0
在 Java 中使用 Lambda 表达式的匿名比较器
要使用 lambda 表达式创建匿名比较器,请按照以下步骤操作。
-
首先,创建一个用户定义的类。
-
然后,创建另一个将用于比较器对象的类。这个类将包括一个带有
sort
方法的collection
类。 -
现在,使用 lambda 表达式,创建比较器对象接口,然后在比较器接口的帮助下实现
compare
方法。 -
Collections
类中的Sort
方法将通过传递对象来调用。 -
根据需要打印或使用分类信息。
让我们根据上述步骤在 Java 中尝试一个示例。
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);
}
}
}
上面的代码将在匿名比较器中使用 lambda 表达式对 Employee
进行排序。见输出:
Name Salary
---------------------
Shawn = 5000.0
Jack = 4500.0
Tina = 4000.0
Jenny = 3500.0
Mike = 3000.0
Michelle = 2500.0
我们创建了数据类来理解问题,但这些比较器也可以轻松应用于内置类型。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。