Me interesa ordenar una lista de una secuencia. Este es el código que estoy usando:
list.stream()
.sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue()))
.collect(Collectors.toList());
¿Me estoy perdiendo de algo? La lista no se ordena.
Debe ordenar las listas según el elemento con el valor más bajo.
for (int i = 0; i < list.size(); i++)
{
System.out.println("list " + (i+1));
print(list, i);
}
Y el método de impresión:
public static void print(List<List> list, int i)
{
System.out.println(list.get(i).getItem().getValue());
}
java
list
sorting
java-stream
Iván C
fuente
fuente
list.sort(Comparator.comparing(o -> o.getItem().getValue()));
era nuevo para mi. ¡Excelente!Java 8 proporciona diferentes métodos api de utilidad para ayudarnos a ordenar mejor los flujos.
Si su lista es una lista de enteros (o dobles, largos, de cadena, etc.), simplemente puede ordenar la lista con los comparadores predeterminados proporcionados por java.
Creando comparador sobre la marcha:
Con el comparador predeterminado proporcionado por java 8 cuando no se pasa ningún argumento a sorted ():
Si desea ordenar la misma lista en orden inverso:
Si su lista es una lista de objetos definidos por el usuario, entonces:
Creando comparador sobre la marcha:
Usando el método Comparator.comparingLong () (también tenemos métodos comparingDouble (), comparingInt ()):
Usando el método Comparator.comparing () (método genérico que compara según el método getter proporcionado):
También podemos hacer encadenamiento usando el método thenComparing ():
Clase de persona
fuente
Comparator.comparing*
es el método mejor y más orientado aParece estar funcionando bien:
Ejemplo de entrada / salida
¿Está seguro de que no está verificando la lista en lugar de
sortedList
[en el ejemplo anterior], es decir, está almacenando el resultado destream()
en un nuevoList
objeto y verificando ese objeto?fuente
**** Esto es útil para ordenar los objetos del mapa anidados como Mapa> aquí los ordené según el precio del objeto del artículo.
fuente
Este es un ejemplo simple :
Es posible que su IDE no obtenga jdk 1.8 o una versión superior para compilar el código.
Configure la versión 1.8 de Java para Your_Project > propiedades> Facetas del proyecto> Versión 1.8 de Java
fuente