Junior — Middle
188
Quelles sont les conséquences possibles lors de la tentative de modifier une collection pendant son parcours?
Entreprises à qui on a demandé
ООО Ренью
Réponse de l'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(); // безопасно удаляет текущий элемент
}
}