ganhando_produtividade_com_Stream_API_Java icon indicating copy to clipboard operation
ganhando_produtividade_com_Stream_API_Java copied to clipboard

DUVIDA - STREAM-API

Open RafaSamm opened this issue 2 years ago • 2 comments

Olá, estou tentando remover elementos utilizando o removeIf, mas a IDE me passa uma exception = UnsupportedOperationException : remove 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);

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

RafaSamm avatar Aug 16 '23 18:08 RafaSamm

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

cami-la avatar Aug 17 '23 18:08 cami-la

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!!!!

RafaSamm avatar Aug 17 '23 18:08 RafaSamm