[Error] no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>)

박채은·2022년 11월 25일
0

Error

목록 보기
3/4

오류가 발생한 상황

int 배열을 내림차순으로 정렬하고자 했다.
Comparator에 Collections.reverseOrder()를 사용하려고 한 순간 오류가 발생했다.

public String solution(int[] numbers) {
        Arrays.sort(numbers, Collections.reverseOrder());
}

원인

https://darkstart.tistory.com/209

primitive 타입에 대한 Comparator가 없기 때문에

Comparator는 원시 타입인 int 배열에서는 사용할 수 없고, 객체(Integer) 배열에서는 사용 가능함

따라서 Comparator를 사용하기 위해서 int[] → Integer[]로 바꾸던가, Comparator를 사용하지 않고, 정렬 알고리즘을 통해 int[]을 따로 정렬해야 한다.
정렬 알고리즘을 사용하기 보다는, int[]Integer[] 또는 List<Integer>로 바꿔보겠다.

해결

방법 1) int[] → Integer[]

Stream boxed()에 대한 설명

Integer[] newArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
Arrays.sort(newArray, Collections.reverseOrder());

방법 2) int[] → List<Integer>

https://stackoverflow.com/questions/1073919/how-to-convert-int-into-listinteger-in-java

List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());
list.sort(Comparator.reverseOrder());

즉, 원시 타입의 배열을 객체 타입의 배열로 바꾸고, Comparator를 사용하자!


정렬에 관련된 내용은 여기에 따로 정리했다.

0개의 댓글