1
resposta

[Dúvida] - findFirst() x findAny()

A diferença entre ambas ficou clara. findFirst() pega a primeira ocorrência, findAny() pega todas mas sem uma ordem, podendo três buscas trazer cada uma com uma ordem diferente.

A dúvida é em qual cenário eu não faria questão de o resultado ser sempre o mesmo? Quando que tanto faz a ordem que volta? Entendi o que faz mas não entendi quando que esse findAny() me serviria.

1 resposta

Oi Roger! Tudo bem?

É difícil pensar em exemplos do findAny mesmo, parece não ser muito intuitivo, né?

Na nossa aplicação, suponha que a gente quisesse retornar um filme de ação, não importando a ordem dele. Assim, pode ser qualquer filme de ação, e aí podemos utilizar o findAny().

Um exemplo mais real é o de escolher um serviço disponível em arquiteturas com múltiplos serviços. Usando microservices ou servidores distribuídos, por exemplo, você pode querer selecionar qualquer servidor disponível para processar uma requisição:

Optional<Servidor> servidorDisponivel = servidores.stream()
    .filter(Servidor::isOnline)
    .findAny();

Espero ter ajudado. Abraços e bons estudos!

Qualquer dúvida estou à disposição :)