💚 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
'Programming > Java' 카테고리의 다른 글
[Java] 열거형(Enum) 이란, 사용법 (0) | 2023.06.20 |
---|---|
[Java] Map 인터페이스의 value 변경하는 법 (0) | 2023.06.12 |
[Java] 문자열 자르기 (substring) (0) | 2023.04.30 |
[Java] ArrayList 오름차순/내림차순 정렬 방법 (0) | 2023.03.30 |
[Java] key-value 쌍을 가지는 Map 자료구조 인터페이스 (0) | 2023.03.24 |
댓글