Back to questions
Т-Банк
Junior — Middle
60
Какие ситуации могут привести к возникновению исключения ConcurrentModificationException в однопоточной среде?
Companies where asked
Answer from AI
sobes.tech AI
Исключение ConcurrentModificationException в Java обычно возникает при одновременном изменении коллекции во время её итерации. В однопоточной среде это может случиться, если во время обхода коллекции с помощью итератора вы изменяете коллекцию напрямую (например, вызываете методы add(), remove() на самой коллекции, а не через итератор).
Пример:
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
for (String s : list) {
if (s.equals("b")) {
list.remove(s); // Прямое изменение коллекции во время итерации
}
}
// Это вызовет ConcurrentModificationException
Правильный способ удаления элементов во время итерации — использовать методы итератора:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
if (s.equals("b")) {
iterator.remove(); // Безопасное удаление
}
}