[Java] int 배열에 Collections.reverseOrder() 사용 못하는 이유
문제상황
int 배열을 내림차순으로 정렬하려고 할 때, 아래와 같은 에러가 발생합니다:
int[] A = {1, 2, 3, 4, 5};
Arrays.sort(A, Collections.reverseOrder()); // 컴파일 에러!
에러 메시지:
error: no suitable method found for sort(int[],Comparator<Object>)
원인
Arrays.sort(A, Collections.reverseOrder()) 가 안되는 이유는:
- Collections.reverseOrder()는 Comparator
타입을 반환합니다 - Comparator는 객체만 비교할 수 있는 인터페이스입니다
- int는 객체가 아닌 primitive 타입이므로 Comparator를 사용할 수 없습니다
해결방법
1. 정렬 후 뒤집기 (권장)
int[] A = {1, 2, 3, 4, 5};
Arrays.sort(A); // 오름차순 정렬
// 뒤집기
for(int i = 0; i < A.length/2; i++) {
int temp = A[i];
A[i] = A[A.length - 1 - i];
A[A.length - 1 - i] = temp;
}
2. Integer 배열로 변환
int[] A = {1, 2, 3, 4, 5};
// int[] -> Integer[] 변환
Integer[] boxedA = Arrays.stream(A).boxed().toArray(Integer[]::new);
Arrays.sort(boxedA, Collections.reverseOrder());
// 다시 int[]로 변환 필요시
for(int i = 0; i < A.length; i++) {
A[i] = boxedA[i];
}
'Algorithm' 카테고리의 다른 글
Comparable vs Comparator (0) | 2025.03.10 |
---|---|
간호사 근무표 생성을 위한 알고리즘. (1) | 2025.02.17 |