https://school.programmers.co.kr/learn/courses/30/lessons/154539
Arrays.sort(numbers, (o1, o2) -> o1 - o2);
int[]
을 역순으로 정렬하기 위해 람다식 Comparator를 인자로 사용 했더니 오류가 발생했다.
Comparator<T>
인터페이스는 제네릭 인터페이스이다.
int
는 기본형(Primitive type)이므로 제네릭 타입이 될 수 없어 오류가 발생했다.
int[]
의 오름차순 정렬은 Comparator 없이 Arrays.sort()로 가능하다.
방법1. int[]
를 Integer[]
으로 바꾼 후 정렬한다.
Integer nums[] = Arrays.stream(numbers).boxed().toArray(Integer[]::new);
Arrays.sort(nums, (o1, o2) -> o2 - o1);
또는
Integer nums[] = Arrays.stream(numbers).boxed().toArray(Integer[]::new);
Arrays.sort(nums, Collections.reverseOrder());
방법2. 오름차순으로 정렬하고 순서를 뒤집는다. (내림차순으로 정렬하려는 경우)
int[] reverse = new int[numbers.length];
for (int i = 0; i < numbers.length; i++) {
reverse[i] = numbers[numbers.length - i - 1];
}
방법3. int[]
를 List<Integer>
으로 바꾼 후 Collections.sort()를 사용해 정렬한다.
// import java.util.stream.Collectors
List<Integer> numList = Arrays.stream(numbers).boxed().collect(Collectors.toList());
Collections.sort(numList, Collections.reverseOrder());
Arrays.stream()을 호출해 List<Integer>로 바꾸는 방법 (Java 버전 별 메소드)
https://stackoverflow.com/questions/880581/how-can-i-convert-int-to-integer-in-java