¿Cómo ordenar un ArrayList<Long>
en Java en orden decreciente?
98
Aquí tienes una forma de list
:
list.sort(null);
Collections.reverse(list);
O puede implementar el suyo propio Comparator
para ordenar y eliminar el paso inverso:
list.sort((o1, o2) -> o2.compareTo(o1));
O incluso más simplemente úselo Collections.reverseOrder()
ya que solo está invirtiendo:
list.sort(Collections.reverseOrder());
l1 > l2 ? -1 : l1 == l2 ? 0 : 1
este código es ridículo. Utiliceo1.compareTo(o2)
entonces.o2.compareTo(o1)
aquí :)list.sort((o1, o2) -> o2.compareTo(o1))
fuente
Puede utilizar el siguiente código que se proporciona a continuación;
o si va a utilizar un comparador personalizado, puede utilizarlo como se indica a continuación
Donde CustomComparator es una clase de comparador que compara el objeto que está presente en la lista.
fuente
Java 8
Bueno, hacer esto en Java 8 es mucho más divertido y fácil.
¡¡¡Las expresiones lambda se mueven aquí !!!
en caso de que necesitaba una lógica más de una línea para comparar una y b se puede escribir como este
fuente
Ordene normalmente y use
Collections.reverse();
fuente
Para lamdas donde su valor largo está en algún lugar de un objeto, recomiendo usar:
o mejor:
fuente
Ordene, luego invierta.
fuente
Un enfoque más general para implementar nuestro propio comparador como se muestra a continuación
fuente
Utilizándolo
Collections.sort()
con un comparador que proporciona el orden decreciente. Consulte Javadoc para Collections.sort .fuente
El siguiente enfoque ordenará la lista en orden descendente y también manejará los valores ' nulos ', en caso de que tenga algún valor nulo, Collections.sort () arrojará NullPointerException
fuente
También puede ordenar un
ArrayList
con a enTreeSet
lugar de acomparator
. Aquí hay un ejemplo de una pregunta que tenía antes para una matriz de enteros. Estoy usando "números" como nombre de marcador de posición paraArrayList
.fuente
TreeSet
no almacena valores duplicados.Entonces, hay algo que me gustaría mencionar que creo que es importante y creo que debería considerar. tiempo de ejecución y memoria. Digamos que tiene una lista y quiere ordenarla, bueno, puede, hay una lista incorporada o podría desarrollar la suya propia. Entonces dices, quieres invertir la lista. Esa es la respuesta que se enumera arriba.
Sin embargo, si está creando esa lista, podría ser bueno usar una estructura de datos diferente para almacenarla y luego simplemente volcarla en una matriz.
Montones hacen precisamente esto. Filtra los datos y se encargará de todo, luego puede sacar todo del objeto y se ordenará.
Otra opción sería comprender cómo funcionan los mapas. Muchas veces, un Mapa o HashMap, como se llaman las cosas, tiene un concepto subyacente detrás.
Por ejemplo ... ingresa un grupo de pares clave-valor donde la clave es la larga, y cuando agrega todos los elementos, puede hacer:
.keys
y le devolverá una lista ordenada automáticamente.Depende de cómo procese los datos antes de cómo creo que debe continuar con su clasificación y posteriores reversiones
fuente
El método de comparación del comparador se puede utilizar para comparar los objetos y luego
reversed()
se puede aplicar el método para invertir el orden:fuente