爲什麼發生?不清楚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
我知道在列表迭代期間的修改。但以我的方式,我有兩個單線程的最終操作 –