Встречается на собеседованиях • сегодня
Как изменить коллекцию во время ее обработки
Изменять коллекцию во время итерации по ней (например, через `for-each` или `Iterator`) нельзя – это вызовет `ConcurrentModificationException`. Вместо этого используйте:
1. **Итератор с поддержкой удаления**:
```java
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (item.equals("removeMe")) {
iterator.remove(); // Безопасное удаление
}
}
```
2. **Копирование коллекции** (если нужно добавлять/изменять):
```java
new ArrayList<>(list).forEach(item -> {
if (item.equals("addMe")) {
list.add("newItem"); // Работает, т.к. итерируем по копии
}
});
```
3. **Stream API** (для фильтрации/трансформации):
```java
List filtered = list.stream()
.filter(item -> !item.equals("removeMe"))
.collect(Collectors.toList());
```
Для `ConcurrentHashMap` и других потокобезопасных коллекций изменения во время итерации допустимы, но поведение может быть недетерминированным.

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