Встречается на собеседованиях • сегодня
Как можно получить ConcurrentModificationException в однопоточном коде
ConcurrentModificationException может возникнуть в однопоточном коде при изменении коллекции во время итерации по ней, например, через for-each или Iterator. Это происходит из-за fail-fast механизма итераторов.
Пример:
```java
List list = new ArrayList<>(Arrays.asList("a", "b", "c"));
for (String s : list) {
if (s.equals("b")) {
list.remove("b"); // Выбросит ConcurrentModificationException
}
}
```
Правильные способы:
1. Использовать Iterator.remove():
```java
Iterator it = list.iterator();
while (it.hasNext()) {
if (it.next().equals("b")) {
it.remove(); // Безопасное удаление
}
}
```
2. Использовать removeIf():
```java
list.removeIf(s -> s.equals("b"));
```
3. Создать копию коллекции для итерации.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы