ganhando_produtividade_com_Stream_API_Java icon indicating copy to clipboard operation
ganhando_produtividade_com_Stream_API_Java copied to clipboard

Dúvida desafio 3

Open dufernandess opened this issue 2 years ago • 6 comments

Oi, Cami, tudo bem?

Estou resolvendo os desafios e fiquei na dúvida em como eu posso resolver o desafio 3. "Desafio 3 - Verifique se todos os números da lista são positivos:"

Eu queria fazer um comparador, item por item da lista, e vir retornando "Verdadeiro" ou "Falso", mas estou com dificuldades.

Como eu posso fazer para ele fazer o teste lógico e vir retornando o resultado booleano, item por item?

Poderia me ajudar?

dufernandess avatar Sep 05 '23 21:09 dufernandess

Olá, @dufernandess. Tudo bem sim e por aí? (:

Então, você pode fazer da seguinte forma:

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> numerosPositivos = numeros.stream()
    .filter(num -> num > 0) //aqui você verifica se o número é positivo
    .collect(Collectors.toList()); //aqui você pega esse número e coloca em uma nova lista

System.out.println(numerosPositivos);

Veja se ajudou. (:

cami-la avatar Sep 10 '23 08:09 cami-la

Oi, Cami. Então, no caso, eu queria o stream fizesse a verificação de acordo com a condição e retornasse um valor booleano. Por exemplo, eu queria a verificação imprimisse dessa forma:

Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Falso

sendo cada retorno booleano referente a verificação de um número.

é possível com o stream?

dufernandess avatar Sep 10 '23 15:09 dufernandess

Sim, é possível. Podemos utilizar o método .map() para isso:

List<Integer> numeros = Arrays.asList(1, 2, 3, -5, -9, 0, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

    List<Boolean> numerosPositivos = numeros.stream()
        .map(num -> num > 0) //aqui você verifica se o número é positivo
        .collect(Collectors.toList()); //aqui você pega o resultado (true or false) e coloca em uma nova lista

    System.out.println(numerosPositivos);

//saída no console
[true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true]

cami-la avatar Sep 11 '23 12:09 cami-la

Show! Muito obrigado!

Cami, consegue me indicar algum repositório onde posso aprender mais sobre as funcionalidades do .map?

Não tinha ficado claro que eu poderia utilizar o .map dessa forma.

Agradeço pela ajuda 🙏

dufernandess avatar Sep 11 '23 13:09 dufernandess

Eita, pior que não tenho nenhum material agora para indicar. :(

Basicamente, utilizamos o .map() quando precisamos temos uma coleção de um tipo (que no nosso caso foi de Integer) e queremos transformar em outro tipo (que no nosso caso foi de Boolean).

Eu gosto muito de artigos, vou te sugerir um que fala sobre Stream: https://www.geeksforgeeks.org/stream-map-java-examples/

E por nada, precisando fico à disposição! Bons estudos para nós! (:

cami-la avatar Sep 11 '23 13:09 cami-la

Muito obrigado, Cami

dufernandess avatar Sep 11 '23 14:09 dufernandess