Junior — Middle
164
Quais as consequências que podem surgir ao tentar modificar uma coleção durante a sua iteração?
Empresas quando solicitadas
ООО Ренью
Resposta da IA
sobes.tech IA
При попытке изменить коллекцию (например, добавить или удалить элементы) во время её обхода с помощью итератора в Java обычно возникает ConcurrentModificationException. Это происходит потому, что итератор фиксирует состояние коллекции при создании, и любые изменения вне методов итератора считаются некорректными.
Чтобы избежать этой ошибки, можно:
- Использовать методы итератора для удаления элементов (
iterator.remove()), которые безопасны. - Создать копию коллекции и обходить её, изменяя оригинал.
- Использовать специальные коллекции из
java.util.concurrent, которые поддерживают безопасное параллельное изменение.
Пример безопасного удаления элементов во время обхода:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (item.equals("removeMe")) {
iterator.remove(); // безопасно удаляет текущий элемент
}
}