Junior — Middle
168
Aké dôsledky môžu nastať pri pokuse o zmenu kolekcie počas jej prechádzania?
Spoločnosti boli požiadané
ООО Ренью
Odpoveď od AI
sobes.tech AI
При попытке изменить коллекцию (например, добавить или удалить элементы) во время её обхода с помощью итератора в 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(); // безопасно удаляет текущий элемент
}
}