sort - ordenar un array java
¿Cómo ordenar ArrayList<Long> en Java en orden decreciente? (10)
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;
});
¿Cómo ordenar ArrayList en Java en orden decreciente?
Al usar Collections.sort()
con un comparador que proporciona el orden decreciente. Ver Javadoc para Collections.sort .
Clasifique normalmente y use Collections.reverse();
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<Long>() {
public int compare(Long o1, Long o2) {
return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);
}
});
Ordenar, luego invertir.
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.
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<Integer> numbers = new ArrayList<Integer>();
TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
numbers = new ArrayList<Integer>(ts);
System.out.println("/nThe numbers in ascending order are:");
for(int i=0; i<numbers.size(); i++)
System.out.print(numbers.get(i).intValue()+" ");
System.out.println("/nThe numbers in descending order are:");
for(int i=numbers.size()-1; i>=0; i--)
System.out.print(numbers.get(i).intValue()+" ");
}
}
Un enfoque más general para implementar nuestro propio Comparador como se muestra a continuación
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
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<Long>() {
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<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);