Cómo ordenar la matriz de tipos primitivos en orden descendente en Java

Ataca la pregunta de forma incremental.

  1. Matriz de cosas. Ordénalo. Eso significa que debe mirar java.util.Arrays, que es una clase llena de métodos auxiliares para matrices de todo tipo.
  2. Ajá, hay un método de clasificación para, por ejemplo, int: public static void sort (int [] a)
  3. Hmm … no hay “ordenar al revés”. Lo que necesita es alguna forma de ordenar utilizando su propia lógica personalizada, como un Comparador. (Ver java.util.Comparator).
  4. Desafortunadamente, Comparator es para tipos de referencia, no para tipos primitivos, y eso no se “arreglará” hasta Java 10 como muy pronto (IIRC). Por lo tanto, no hay forma de anular el orden de clasificación.
  5. ¿Tal vez podríamos ordenarlo y luego revertir la matriz? Una búsqueda rápida en Google más tarde y tenemos toneladas de ejemplos sobre cómo revertir eficientemente una matriz …
  6. O podríamos aprovechar la localidad de caché y simplemente negar toda la matriz antes de ordenarla, luego ordenarla y luego negarla nuevamente. (Nota: esto tiene un caso límite: el negativo de Integer.MIN_VALUE sigue siendo Integer.MIN_VALUE. Dejaré la solución al lector).
  7. Por último, puede cortar y pegar el método Arrays.sort () y cambiar o viceversa …