Java 공부/Java 일반

Arrays.sort() 사용시 주의할 점

모항 2022. 1. 14. 00:50

Arrays.sort() 를 이용해 정수 배열을 역순으로 정리하려고 시도하였다.

int[] temp = B;
Arrays.sort(temp, Collections.reverseOrder());

B는 temp와 같은 타입의 배열이다.

 

 

그런데 다음과 같은 오류가 뜨고 실행이 안 되었다.

The method sort(int[]) in the type Arrays is not applicable for the arguments (int[], Collections.reverseOrder())

 

구글에 검색해보았을 땐 분명 이렇게 쓰면 된다고 했는데... 뭐가 문제지 싶어서 Java api 문서에서 Arrays.sort()를 살펴보았다.

 

public static void sort(int a[], Comparator) 같은 메소드가 정의되어있을 줄 알았는데 그렇지 않았다. 그 대신 아래의 메소드가 있었다.

public static <T> void sort​(T[] a, Comparator<? super T> c)

 

이 함수는 제네릭 타입의 객체들을 정렬해주기 때문에 여러 가지 타입을 처리할 수 있다.

그런데 int는 객체가 아니었다!

int는 그냥 primitive type이었던 것이다.

 

코드를 다음과 같이 수정해주니 데이터가 문제 없이 정렬되었다.

Integer[] temp = B;
Arrays.sort(temp, Collections.reverseOrder());

B 또한 Integer[]로 정의해주어야 한다.

 

 

결론: Generic Class로 정의된 메소드를 이용할 때 primitive type을 사용하지 말자!