Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dúvida desafio 4 #13

Open
WillderCanabrava opened this issue Sep 20, 2023 · 4 comments
Open

Dúvida desafio 4 #13

WillderCanabrava opened this issue Sep 20, 2023 · 4 comments

Comments

@WillderCanabrava
Copy link

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();

}

}

@cami-la
Copy link
Collaborator

cami-la commented Sep 25, 2023

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?

@WillderCanabrava
Copy link
Author

Ahh, entendi! Muito obrigado!

@dcasimiro89
Copy link

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?

@cami-la
Copy link
Collaborator

cami-la commented Nov 29, 2023

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants