ganhando_produtividade_com_Stream_API_Java
ganhando_produtividade_com_Stream_API_Java copied to clipboard
Desafio 19
https://github.com/IgorTudisco/DIO---Trilha-Java-B-sico/tree/main/Ganhando_Produtividade_com_Stream_API/Desafio/DesafioStreamAPI/src/desafiostreamapi/desafio
Não entendi como usar o Stream para resolver esse desafio.
Se possível, gostaria que me explicasse essa parte.
package desafiostreamapi.desafio;
import java.util.*;
import java.util.function.*;
public class D19 {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
BinaryOperator<Integer> somaTodos = (n1, n2) -> n1 + n2;
Consumer<Integer> printSoma = n1 -> {
Integer soma;
if(n1 % 3 == 0){
soma = numeros.stream().reduce(0, somaTodos);
System.out.println(soma);
} else if (n1 == 5){
System.out.println(n1);
}
};
numeros.stream().forEach(printSoma);
}
}
// Desafio -> https://github.com/digitalinnovationone/ganhando_produtividade_com_Stream_API_Java/tree/master/src/stream_api
olá, amigo
aqui uma forma de resolver O enunciado fala que deve-se somar os número divisíveis por 3 E 5, logo, deve ser divisível pelos dois ao mesmo tempo.
// Desafio 19 - Encontre a soma dos números divisíveis por 3 e 5:
public static int sumIfDivisibleBy3and5(List<Integer> list) {
var result = list.stream()
.filter(n -> n % 3 == 0 && n % 5 == 0)
.mapToInt(Integer::intValue)
.sum();
return result;
Olá. Fiz dessa maneira, o resultado com essa lista da 0, mas caso você coloque um 15 e um 30 para testar, nota que o resultado é 45.
public class Desafio19SomaNumsDiv3e5 {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
int numsDiv3e5 = numeros.stream()
.filter(n -> n%3 == 0 && n%5 == 0)
.reduce(0, Integer::sum);
System.out.println("Soma dos números divisíveis por 3 e 5: " + numsDiv3e5);
}
}
espero ter ajudado. Abraço.