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