ganhando_produtividade_com_Stream_API_Java
ganhando_produtividade_com_Stream_API_Java copied to clipboard
Dúvida desafio 4
Oi, Camila!
No desafio 4, consegui selecionar os números ímpares, porém quando fui removê-los da lista, não deu certo (tentei remover utilizando o método removeAll). Qual o procedimento para a remoção?
Obrigado!
Segue meu código:
public class RemoverImpares {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
List<Integer> numerosImpares = numeros.stream().filter(n -> n % 2 != 0).toList();
}
}
Olá, bom dia! (: Então, sua solução está quase certa.
O desafio é: "Remova todos os valores ímpares:", logo vamos pegar apenas os números pares e caso tenha, o número 0.
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
List<Integer> numerosParesComZero = numeros.stream()
.filter(n -> n % 2 == 0 || n == 0) // Filtra números pares e o zero
.collect(Collectors.toList());
System.out.println("Números pares e neutro na lista: " + numerosPares);
Eu faria dessa forma, ficou bom? Deu para entender?
Ahh, entendi! Muito obrigado!
Boa noite, Cami. Tudo bem? Estava quebrando a cabeça tentando remover literalmente os números ímpar da lista. Eu cheguei exatamente até o filter(n -> n % 2 != 0), com a mesma lógica do Wilder, porém estava procurando um método seguinte da stream, algo relacionado por exemplo .remove(), para remover o que está sendo filtrado. Por um acaso, pela stream tem como fazer isso?
Boa pergunta! @dcasimiro89 Aqui está uma maneira de fazer isso:
numeros.removeIf(numero -> numero % 2 != 0);
Mas, precisa ficar atento! O método removeIf() modifica a lista original. Isso pode não ser a melhor opção se você quiser manter a lista original sem alterações.
Uma alternativa é usar o seguinte código:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
List<Integer> numerosParesComZero = numeros.stream()
.filter(n -> n % 2 == 0 || n == 0) // Aqui, estamos filtrando números pares e o zero
.collect(Collectors.toList());
System.out.println("Números pares e neutro na lista: " + numerosParesComZero);
Dessa forma, você cria uma nova lista chamada numerosParesComZero, que contém apenas os números pares e o zero da lista original. Assim, você mantém a lista original intacta, sem fazer alterações nela. É uma maneira mais segura de realizar essa tarefa!