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 표현식을 사용하는 익명 비교기
람다 식으로 익명 비교기를 만들려면 아래 단계를 따르세요.
-
먼저 사용자 정의 클래스를 생성합니다.
-
그런 다음 비교기 개체에 사용할 다른 클래스를 만듭니다. 이 클래스에는
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
우리는 문제를 이해하기 위해 데이터 클래스를 만들었지만 이러한 비교기는 내장 유형에도 쉽게 적용할 수 있습니다.