[java] 자바 배열 정렬 내림차순?

Arrays 클래스 에서 오름차순으로 정렬하는 방법과 같이 내림차순으로 배열을 정렬하는 쉬운 방법이 있습니까? 있습니까?

아니면 게으르지 말고 스스로해야합니다. [



답변

이것을 사용하여 모든 종류의 객체를 정렬 할 수 있습니다

sort(T[] a, Comparator<? super T> c)

Arrays.sort(a, Collections.reverseOrder());

Arrays.sort()기본 배열을 내림차순으로 정렬하는 데 직접 사용할 수 없습니다. 에 Arrays.sort()의해 정의 된 역 비교기를 전달 하여 메소드 를 호출하려고 Collections.reverseOrder()하면 오류가 발생합니다.

sort (int [], comparator)에 적합한 메소드가 없습니다.

Integer 배열과 같은 ‘Array of Objects’에서는 제대로 작동하지만 int 배열과 같은 기본 배열에서는 작동하지 않습니다.

기본 배열을 내림차순으로 정렬하는 유일한 방법은 먼저 배열을 오름차순으로 정렬 한 다음 배열을 제자리로 뒤집는 것입니다. 이것은 2 차원 프리미티브 배열에도 적용됩니다.


답변

목록을 위해

Collections.sort(list, Collections.reverseOrder());

배열

Arrays.sort(array, Collections.reverseOrder());


답변

이것을 사용할 수 있습니다 :

    Arrays.sort(data, Collections.reverseOrder());

Collections.reverseOrder()Comparator역 자연 순서를 사용하여를 반환합니다 . 를 사용하여 자신의 비교기의 역 버전을 얻을 수 있습니다 Collections.reverseOrder(myComparator).


답변

대안이 될 수 있습니다 (숫자 !!!)

  1. 배열에 -1을 곱합니다
  2. 종류
  3. -1로 다시 한번 곱하십시오

말 그대로 :

array = -Arrays.sort(-array)


답변

명시 적 비교기가없는 경우 :

Collections.sort(list, Collections.reverseOrder());

명시 적 비교기 :

Collections.sort(list, Collections.reverseOrder(new Comparator()));


답변

자바 8 :

Arrays.sort(list, comparator.reversed());

업데이트 :
reversed()지정된 비교기를 되돌립니다. 일반적으로 비교기는 오름차순으로 정렬되므로 순서가 내림차순으로 바뀝니다.


답변

프리미티브 요소를 포함하는 배열의 경우 org.apache.commons.lang(3)(정렬 후) 배열을 쉽게 되돌릴 수있는 쉬운 방법 이 있다면 다음 을 사용하는 것입니다.

ArrayUtils.reverse(array);