본문 바로가기
Programming/Java

[Java] Comparator 인터페이스의 compare 메서드

by 서현 SEOHYEON 2023. 5. 30.

💚 Comparator 인터페이스

- 자바에서 제공하는 인터페이스

- 두 개의 객체를 비교하는 데 사용

- 다양한 정렬 방식을 지원하기 위해 익명 클래스 또는 람다 표현식으로 구현될 수 있다.

 

 

💚 Comparator 인터페이스 - compare 메서드

- compare 메서드는 다음과 같은 형식으로 정의

int compare(T obj1, T obj2)

- 여기서 T는 비교하려는 객체의 타입을 나타낸다.

- compare 메서드는 두 개의 객체 obj1과 obj2를 인자로 받으며, 비교 결과에 따라 세 가지 경우의 값을 반환한다.

① obj1 < obj2 인 경우 음수를 반환

② obj1 == obj2 인 경우 0을 반환

③ obj1 > obj2인 경우 양수를 반환

- 음수 또는 0이면 객체의 자리를 유지

 

- 이해가 조금 어렵다면, 거꾸로 생각하자

오름차순 정렬을 원한다면 return값이 음수가 나오게 하면 된다는 것.

compare 메서드 → 정렬 기준을 내가 정한다고 생각

 

 

💚 compare 메서드 사용 예시

- 문자열의 길이를 기준으로 정렬하는 Comparator 구현

import java.util.Arrays;
import java.util.Comparator;

public class ComparatorExample {
    public static void main(String[] args) {
        String[] names = {"Alice", "Bob", "Charlie", "David"};

        // 길이를 기준으로 문자열 배열 정렬
        Arrays.sort(names, new LengthComparator());

        // 정렬된 배열 출력
        for (String name : names) {
            System.out.println(name);
        }
    }
}

class LengthComparator implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
        return Integer.compare(s1.length(), s2.length());
    }
}

- 실행 결과

Bob
Alice
David
Charlie

참고

https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

 

Comparator (Java Platform SE 8 )

Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. In the foregoing description, the notation sgn(expression) designates the mathematical s

docs.oracle.com

 

댓글