Вопрос проверяет знание способов безопасного изменения коллекций во время итерации.
Используйте:
Iterator.remove().
Копирование коллекции (new ArrayList<>(list)).
Потокобезопасные коллекции (ConcurrentHashMap).
1. Iterator.remove():
List<String> list = new ArrayList<>(List.of("a", "b"));
Iterator<String> it = list.iterator();
while (it.hasNext()) {
if (it.next().equals("a")) {
it.remove(); // Безопасное удаление
}
}2. Копирование коллекции:
for (String item : new ArrayList<>(list)) {
if (item.equals("a")) {
list.remove(item); // Работает, т.к. итерируем по копии
}
}3. Потокобезопасные коллекции:
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("a", 1);
for (String key : map.keySet()) {
if (key.equals("a")) {
map.remove(key); // Не вызывает исключение
}
}