¿Cómo ordenar ArrayList en Java en orden decreciente?

¿Cómo ordenar ArrayList en Java en orden decreciente?

Aquí hay una forma para su list :

 Collections.sort(list); Collections.reverse(list); 

O puede implementar su propio Comparator para ordenar y eliminar el paso inverso:

 Collections.sort(list, new Comparator() { public int compare(Long o1, Long o2) { return o2.compareTo(o1); } }); 

O incluso más simplemente use Collections.reverseOrder() ya que solo está invirtiendo:

 Collections.sort(list, Collections.reverseOrder()); 
 Comparator comparator = Collections.reverseOrder(); Collections.sort(arrayList, comparator); 

Puede usar el siguiente código que se proporciona a continuación;

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

o si va a utilizar un comparador personalizado, puede usarlo como se indica a continuación

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

Donde CustomComparator es una clase de comparación que compara el objeto que está presente en la lista.

Java 8

hacer esto en Java 8 es muy divertido y fácil

 Collections.sort(variants,(a,b)->a.compareTo(b)); Collections.reverse(variants); 

Lambda expresiones rock aquí!

en caso de que necesite una lógica de más de una línea para comparar ayb , podría escribirlo así

 Collections.sort(variants,(a,b)->{ int result = a.compareTo(b); return result; }); 

Clasifique normalmente y use Collections.reverse();

Ordenar, luego invertir.

Un enfoque más general para implementar nuestro propio Comparador como se muestra a continuación

 Collections.sort(lst,new Comparator(){ public int compare(Long o1, Long o2) { return o2.compareTo(o1); } }); 

El siguiente enfoque ordenará la lista en orden descendente y también maneja los valores ‘ nulos ‘, por si acaso, si tiene valores nulos, entonces Collections.sort () arrojará NullPointerException

  Collections.sort(list, new Comparator() { public int compare(Long o1, Long o2) { return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1); } }); 

Al usar Collections.sort() con un comparador que proporciona el orden decreciente. Ver Javadoc para Collections.sort .

También puede ordenar una ArrayList con un TreeSet lugar de un comparator . Aquí hay un ejemplo de una pregunta que tuve antes para una matriz de enteros. Estoy usando “números” como nombre de marcador de posición para ArrayList .


  import.java.util.*; class MyClass{ public static void main(String[] args){ Scanner input = new Scanner(System.in); ArrayList numbers = new ArrayList(); TreeSet ts = new TreeSet(numbers); numbers = new ArrayList(ts); System.out.println("\nThe numbers in ascending order are:"); for(int i=0; i=0; i--) System.out.print(numbers.get(i).intValue()+" "); } }