Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Usando stream para trazer a entidade com maior ID

Boa tarde pessoal,

eu tenho a seguinte entidade:

public class Pessoa{
    private Long id;
    private String nome;
}

E digamos que eu tenho o set de Pessoas com os seguinte dados:

pessoa1: id 1 - String fulano

pessoa2: id 3 - String beltrano

pessoa3: id 2 - String ciclano

e gostaria de usar a API do java 8, stream para me trazer a entidade com maior ID do meu Set sem necessidade de eu ter que criar um for e sair comparando.

Nesse caso o resultado seria: pessoa2 cujo ID é 3

Será que isso é possível?

Obrigado a todos.

3 respostas
solução!

Boa noite, João! Como vai?

Tem como sim! Basta criarmos o Stream baseado no Set e coletarmos o objeto com o máximo valor de acordo com um critério de comparação passado por nós! Caso não seja encontrado ninguém, um objeto pessoa vazio é retornado. Lá vai o código:

Stream<Pessoa> pessoasStream = pessoasSet.stream();
Pessoa pessoa = pessoasStream.collect(Collectors.maxBy(Comparator.comparingInt(Pessoa::getId)))
                        .orElse(new Pessoa());

System.out.println(pessoa);

Qualquer coisa é só falar!

Grande abraço e bons estudos!

Obrigado Gabriel, funcionou muito bem.

Por nada, João!

Sempre que tiver alguma dúvida é só recorrer ao pessoal aqui no fórum!

Grande abraço e bons estudos!