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을 사용하지 말자!
'Java 공부 > Java 일반' 카테고리의 다른 글
자바로 트리 만들기 (0) | 2022.02.12 |
---|---|
부분문자열을 얻어올 때 사용하는 substring() (0) | 2022.02.11 |
개행문자 (0) | 2022.01.28 |
중복값을 없앨 때에 유용한 HashSet, HashMap (0) | 2022.01.28 |
버퍼드리더 BufferedReader (0) | 2022.01.13 |