Java 中的匿名比較器

Sheeraz Gul 2023年10月12日
  1. 在 Java 中使用匿名類的匿名比較器
  2. 在 Java 中使用 Lambda 表示式的匿名比較器
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

我們建立了資料類來理解問題,但這些比較器也可以輕鬆應用於內建型別。

作者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

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

相關文章 - Java Comparator