Я определил список из 0-9(Integer)
, как показано ниже:
List<Integer> list =
IntStream.range(0, 10)
.boxed()
.collect(Collectors.toCollection(ArrayList::new));
Когда я пытаюсь удалить элементы, используя приведенный ниже код:
list.stream()
.peek(list::remove)
.forEach(System.out::println);
Он должен бросить ConcurrentModificationException
, но интересно, что он работает для некоторых элементов и выводит ниже вывод (исключение в конце и удаление некоторых элементов):
0
2
4
6
8
null
null
null
null
null
Exception in thread "main" java.util.ConcurrentModificationException
Но если я добавил sorted()
, как показано ниже:
list.stream()
.sorted()
.peek(list::remove)
.forEach(System.out::println);
Это работало отлично и удалило все элементы, я смущен, почему stream
ведет себя таким образом.