Sobes.tech
Junior — Middle

De que forma é possível modificar o conteúdo de uma coleção durante a sua iteração?

sobes.tech IA

Resposta da IA

Em Java, para modificar de forma segura uma coleção durante a sua iteração, recomenda-se usar um iterador com suporte para remover ou adicionar elementos.

Exemplo usando Iterator para remover elementos:

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.equals("b")) {
        iterator.remove(); // remoção segura do elemento durante a iteração
    }
}

Para adicionar elementos durante a iteração, pode-se usar ListIterator:

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
    String item = listIterator.next();
    if (item.equals("b")) {
        listIterator.add("d"); // adição de elemento durante a iteração
    }
}

É importante não modificar a coleção diretamente (por exemplo, através de list.remove()), pois isso lançará uma ConcurrentModificationException.