为什么发生?不清楚java.util.ConcurrentModificationException
我写了这个代码,它抛出java.util.ConcurrentModificationException
List<Integer> list = Stream.iterate(0, t -> t + 1).limit(10).collect(Collectors.toList());
System.out.println(list);
List<Integer> subList = list.subList(5, list.size());
list.removeAll(subList);
System.out.println(subList);
System.out.println(list);
但下面的代码不会引发
List<Integer> list = Stream.iterate(0, t -> t + 1).limit(10).collect(Collectors.toList());
System.out.println(list);
List<Integer> subList = list.subList(5, list.size());
System.out.println(subList);
list.removeAll(subList);
System.out.println(list);
@Blasanka哪里第一代码片段迭代,同时做一些修改?你有没有看到,唯一的区别是两行交换,其中一行只打印子列表? – Seelenvirtuose
我知道在列表迭代期间的修改。但以我的方式,我有两个单线程的最终操作 –