Carregando...
Carregando...
Ajude a melhorar a plataforma
No desenvolvimento de um sistema de gerenciamento de biblioteca em Java, você está implementando uma funcionalidade para adicionar novos títulos de livros a uma lista e, posteriormente, remover alguns títulos com base em uma lista de remoção.
Considere o seguinte trecho de código para realizar essas operações:
Descrição de imagem:O código começa com a declaração de uma lista chamada "livros", que é do tipo String. Essa lista é inicializada como uma nova instância de ArrayList<String>.
Após a criação da lista, três strings representando títulos de livros - "Dom Casmurro", "O Pequeno Príncipe" e "A Metamorfose" - são adicionadas à lista, uma após a outra, através do método add.
Segue-se a declaração de uma segunda lista chamada "removerLivros", também do tipo String e inicializada como uma nova instância de ArrayList<String>.
Nesta segunda lista, apenas uma string, "O Pequeno Príncipe", é adicionada usando o método add. A parte final do código, designada para a remoção dos livros, é mencionada como um comentário mas não contém uma implementação específica, indicando que essa parte do código ainda está pendente ou é deixada para o leitor completar.
Baseado nas características da interface List e suas implementações, qual das seguintes opções de código completa corretamente a implementação para remover os livros listados em removerLivros da lista livros?

Explique melhor esta questão
Abre o Tutor com o enunciado e as alternativas já no campo — você revisa e envia.
Esta questão foi verificada por um de nossos administradores.
🎓 Gabarito Comentado (AVA):
JUSTIFICATIVA
O método removeAll(Collection<?> c) é usado para remover todos os elementos da lista livros que também estão presentes na lista removerLivros. Esta é a maneira mais direta e eficiente de realizar a operação desejada.
O método removeIf(Predicate<? super E> filter) remove os elementos que satisfazem uma condição especificada por um predicado. Embora essa opção possa funcionar, ela é menos direta do que a opção correta.
Usar um loop for-each para percorrer a lista removerLivros e remover cada elemento da lista livros pode ser ineficiente se a lista removerLivros contiver muitos elementos que não estão em livros.
O método forEach(Consumer<? super T> action) executa uma ação para cada elemento da lista. No entanto, modificar a lista livros dentro do forEach pode levar a resultados inesperados ou a uma ConcurrentModificationException.
O método retainAll(Collection<?> c) é usado para reter apenas os elementos em livros que também estão contidos em removerLivros, o que é o oposto do que se deseja alcançar.