Java Comparator 인터페이스 이해
Comparator 인터페이스는 목록, 세트 및 맵과 같이 일반적으로 사용되는 데이터 구조를 제공하는 클래스 및 인터페이스 세트인 Java Collections Framework의 일부입니다. Comparator 인터페이스는 사용자가 정의한 일부 기준에 따라 객체 모음을 정렬하는 데 사용됩니다. 즉, Comparator 인터페이스를 사용하여 개체 자체에서 제공하는 기본 순서에 의존하지 않고 원하는 방식으로 개체 컬렉션을 정렬할 수 있습니다.
Comparator 인터페이스를 사용하려면 두 개체를 매개 변수로 사용하고 개체의 순서를 나타내는 정수 값을 반환하는 compare() 메서드를 구현해야 합니다. 첫 번째 객체가 두 번째 객체보다 작으면 compare()는 음의 정수를 반환합니다. 첫 번째 개체가 두 번째 개체보다 "큰" 경우 compare()는 양의 정수를 반환합니다. 객체가 같으면 compare()는 0을 반환합니다.
Java 비교기 인터페이스 사용
직원을 나타내는 개체 모음이 있고 급여를 기준으로 정렬하려고 한다고 가정해 보겠습니다. 다음은 이를 달성하기 위해 Comparator 인터페이스를 사용하는 방법의 예입니다.
import java.util.*;
public class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public int getSalary() {
return salary;
}
}
public class EmployeeSalaryComparator implements Comparator<Employee> {
public int compare(Employee e1, Employee e2) {
return Integer.compare(e1.getSalary(), e2.getSalary());
}
}
public class Main {
public static void main(String[] args) {
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("Alice", 50000));
employees.add(new Employee("Bob", 60000));
employees.add(new Employee("Charlie", 55000));
employees.add(new Employee("David", 65000));
Collections.sort(employees, new EmployeeSalaryComparator());
for (Employee employee : employees) {
System.out.println(employee.getName() + " - " + employee.getSalary());
}
}
}
이 예제에서는 이름과 급여가 있는 Employee 클래스를 정의하고 EmployeeSalaryComparator라는 별도의 클래스에서 Comparator 인터페이스를 구현합니다. EmployeeSalaryComparator의 compare() 메서드는 급여를 기준으로 두 Employee 개체를 비교하고 이 비교기를 사용하여 Collections.sort()를 사용하여 main() 메서드에서 직원 목록을 정렬합니다.
결과는 이러합니다.
Alice - 50000
Charlie - 55000
Bob - 60000
David - 65000
Java Comparator 인터페이스를 사용하여 사용자 지정 기준에 따라 개체 컬렉션을 정렬하는 방법을 살펴보았습니다. compare() 메서드를 구현하면 개체 자체에서 제공하는 기본 순서에 의존하지 않고 원하는 순서를 정의할 수 있습니다. 우리는 비교자 인터페이스를 사용하여 직원 개체 컬렉션을 급여별로 정렬하는 방법에 대한 간단한 예제를 알아보았습니다.