HOWTO · Java
Java 中的匿名比較器
本教程演示瞭如何在 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
我們建立了資料類來理解問題,但這些比較器也可以輕鬆應用於內建型別。