Java 中的匿名比較器
Sheeraz Gul
2023年1月30日
2022年4月22日
在 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
我們建立了資料類來理解問題,但這些比較器也可以輕鬆應用於內建型別。
Author: Sheeraz Gul
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