Estou interessado em classificar uma lista de um fluxo. Este é o código que estou usando:
list.stream()
.sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue()))
.collect(Collectors.toList());
Estou esquecendo de algo? A lista não está ordenando.
Deve ordenar as listas de acordo com o item de menor valor.
for (int i = 0; i < list.size(); i++)
{
System.out.println("list " + (i+1));
print(list, i);
}
E o método de impressão:
public static void print(List<List> list, int i)
{
System.out.println(list.get(i).getItem().getValue());
}
java
list
sorting
java-stream
Ivan C
fonte
fonte
list.sort(Comparator.comparing(o -> o.getItem().getValue()));
era novo para mim. Ótimo!Java 8 fornece diferentes métodos de API de utilitário para nos ajudar a classificar melhor os fluxos.
Se a sua lista for uma lista de inteiros (ou Double, Long, String, etc.), então você pode simplesmente classificar a lista com comparadores padrão fornecidos por java.
Criando comparador em tempo real:
Com o comparador padrão fornecido por java 8 quando nenhum argumento for passado para Sort ():
Se você deseja classificar a mesma lista na ordem inversa:
Se a sua lista for uma lista de objetos definidos pelo usuário, então:
Criando comparador em tempo real:
Usando o método Comparator.comparingLong () (também temos os métodos comparingDouble () e comparingInt ()):
Usando o método Comparator.comparing () (método genérico que compara com base no método getter fornecido):
Podemos fazer o encadeamento também usando o método Comparing ():
Classe pessoal
fonte
Comparator.comparing*
é a maneira melhor e mais orientada paraParece estar funcionando bem:
Exemplo de entrada / saída
Tem certeza de que não está verificando a lista em vez de
sortedList
[no exemplo acima], ou seja, você está armazenando o resultado destream()
em um novoList
objeto e verificando esse objeto?fonte
**** isso é útil para classificar os objetos de mapa aninhados como Mapa> aqui eu classifiquei com base no preço do objeto de item.
fonte
Este é um exemplo simples:
Pode ser possível que seu IDE não esteja obtendo o jdk 1.8 ou versão superior para compilar o código.
Defina o Java versão 1.8 para Your_Project > propriedades> Project Facets> Java versão 1.8
fonte