Remover duplicatas
Ao processar listas de dados reais, como registros de usuários ou itens de um pedido, é comum precisar remover duplicatas sem perder a ordem de inserção. Por exemplo, ao exibir um histórico de ações em ordem cronológica, usar um Set descartaria a sequência original. Dominar o contains() com ArrayList permite manter o controle manual da ordem, algo essencial quando a sequência dos dados importa.
O PROBLEMA
ArrayList com duplicatas. Novo sem repetições mantendo ordem.
EXEMPLO
[1,2,3,4,5]
SOBRE O CONCEITO
O exercício pede para percorrer a lista original e adicionar cada elemento a uma nova lista apenas se ele ainda não estiver presente. Isso é feito com if (!novaLista.contains(elemento)) { novaLista.add(elemento); }. O erro comum é usar Set, que automaticamente elimina duplicatas, mas não garante a ordem de inserção (a menos que use LinkedHashSet, que é proibido). Com contains(), você controla explicitamente a adição, preservando a ordem. Note que contains() internamente faz uma busca linear, o que é aceitável para listas pequenas; para grandes volumes, outras estruturas seriam mais eficientes.
RESOLUÇÃO