Назад к вопросам
СБЕР
Senior
5
```java import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class Arrays2Test { public static void main(String[] args) { List<Integer> list = new CopyOnWriteArrayList<>(List.of(1, 2, 3)); Iterator<Integer> it1 = list.iterator(); list.add(4); Iterator<Integer> it2 = list.iterator(); while (it1.hasNext()) { System.out.println(it1.next()); } System.out.println("****"); while (it2.hasNext()) { System.out.println(it2.next()); } } } ```
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В данном коде используется CopyOnWriteArrayList, который создает копию внутреннего массива при каждой модификации.
- Итератор
it1создан до добавления элемента4в список. - После добавления создается новый итератор
it2.
При обходе it1 будут выведены элементы исходного массива: 1, 2, 3, так как итератор работает с копией на момент создания.
При обходе it2 будут выведены элементы с учетом добавления: 1, 2, 3, 4.
Вывод будет:
1
2
3
****
1
2
3
4
Это демонстрирует, что итераторы CopyOnWriteArrayList не отражают изменения, сделанные после их создания, что обеспечивает безопасность при параллельном чтении и записи, но с затратами на память и производительность при частых изменениях.