Sobes.tech
Junior — Middle

Como é que se pode obter uma lista que não pode ser modificada, com base numa ArrayList existente?

sobes.tech IA

Resposta da IA

Para obter uma lista imutável baseada numa ArrayList existente em Java, pode usar o método Collections.unmodifiableList(). Este método devolve uma envoltória sobre a lista original que não permite modificar o seu conteúdo através da interface fornecida.

Exemplo:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

ArrayList<String> listaMutável = new ArrayList<>();
listaMutável.add("Elemento 1");
listaMutável.add("Elemento 2");

List<String> listaImutável = Collections.unmodifiableList(listaMutável);

// Tentar modificar a listaImutável provocará UnsupportedOperationException
// listaImutável.add("Novo elemento"); // Erro!

É importante lembrar que se a listaMutável original mudar, as mudanças serão visíveis também na listaImutável, pois é apenas uma envoltória. Se for necessária uma imutabilidade total, deve criar uma cópia da lista e envolvê-la:

List<String> listaTotalmenteImutável = Collections.unmodifiableList(new ArrayList<>(listaMutável));