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

DUVIDA - STREAM-API #1

Open
RafaSamm opened this issue Aug 16, 2023 · 2 comments
Open

DUVIDA - STREAM-API #1

RafaSamm opened this issue Aug 16, 2023 · 2 comments

Comments

@RafaSamm
Copy link

Olá, estou tentando remover elementos utilizando o removeIf, mas a IDE me passa uma exception = UnsupportedOperationException : remove
List numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

         numeros.removeIf(n -> n % 2 != 0);
         System.out.println(numeros);

Obs: Tentei de diversas maneiras, mesmo colocando como exceção checada e não checada, simplesmente ele não aceita, o que faço?

att Rafael

@cami-la
Copy link
Collaborator

cami-la commented Aug 17, 2023

Oi, Rafa. Tudo bem?

Obrigada pela pergunta, bem interessante. Vamos lá: quando você inicia uma List com o Arrays.asList() você cria uma lista que não pode ser modificada. Daí, você esta tentando usar um método que para ele ser executado, por default, ele precisa modificar o objeto.

Screenshot from 2023-08-17 14-46-19

Iniciei o objeto números com uma lista que pode ser modificada, e deu certo. Sua implementação do método removeIf() está correta!

Aí para utilizar o método removeIf() você poderá fazer da seguinte forma:

    List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
    /*numeros.removeIf(n -> n % 2 != 0);
    System.out.println(numeros);*/

    //Fazendo uma cópia da lista que não pode ser modificada:
    List<Integer> numeros2 = new ArrayList<>(numeros);

    // Aqui retornará true porque as duas listas contêm os mesmos elementos na mesma ordem.
    //Porém, elas são objetos distintos em memória.
    System.out.println(numeros2.equals(numeros));

    //Agora sim você consegue remover os elementos:
    numeros2.removeIf(n -> n % 2 != 0);
    System.out.println(numeros2);
  }
}

Screenshot from 2023-08-17 15-16-25

@RafaSamm
Copy link
Author

olá, tudo bem Cami....agora eu entendi...muito obrigado...simples e direto....perfeito. No máximo eu estava somente isolando os ímpares dos pares, obrigado!!!!

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

2 participants