카테고리 보관물: Java

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);