Bom dia. Tenho o seguinte código que cria uma lista de alunos e depois cria uma nova lista usando o método stream, fazendo um ordenação com uma classe que implementa Comparator, filtrando os alunos com nota acima de 7 e por fim convertendo para lista e atribuindo a novaLista.
List<Aluno> novaLista = null;
novaLista.add(new Aluno(1, "Matheus", 7.9));
novaLista.add(new Aluno(2, "Ana", 7.2));
novaLista = lista.stream()
.sorted(new OrdenaPorNota())
.filter(al -> al.getNota() > 7)
.collect(
Collectors.toList()
);
Até aqui beleza, quando eu percorro, retorna como esperado:
novaLista.forEach(System.out::println);
Matrícula: 2
Nome: ana
Nota: 7,2
Matrícula: 1
Nome: matheus
Nota: 7,9
Mas quando eu uso quero converter para mapa, não retorna ordenado:
Map<Integer, Double> mapa = new HashMap<>();
mapa = lista.stream()
.sorted(ordenaPorNota)
.filter(al -> al.getNota() > 7)
.collect(
Collectors.toMap(al -> al.getMatricula(), al -> al.getNota())
);
mapa.values().forEach(nota -> System.out.println(nota));
Retorno:
7.9
7.2
Alguém pode me esclarecer se estou errando alguma coisa ? Obrigado.