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 표현식을 사용하는 익명 비교기

람다 식으로 익명 비교기를 만들려면 아래 단계를 따르세요.

  • 먼저 사용자 정의 클래스를 생성합니다.
  • 그런 다음 비교기 개체에 사용할 다른 클래스를 만듭니다. 이 클래스에는 sort 메소드가 있는 collection 클래스가 포함됩니다.
  • 이제 람다 식을 사용하여 비교기 개체 인터페이스를 만든 다음 비교기 인터페이스의 도움으로 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);
    }
  }
}

위의 코드는 익명 비교기에서 람다 식을 사용하여 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