본문 바로가기

Algorithm

java 이슈 모아보기

[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()) 가 안되는 이유는:

  1. Collections.reverseOrder()는 Comparator 타입을 반환합니다
  2. Comparator는 객체만 비교할 수 있는 인터페이스입니다
  3. 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