下面的函数递归地遍历一个列表并将其除以一半并对子列表做一些事情。当 listsize 为 2 时,递归中断。我知道如果在迭代列表时更改列表,则会发生并发修改异常。但我不使用迭代,它仍然会发生:
private static List<ParticipantSlot> divide(List<ParticipantSlot> list) {
int n = list.size();
//do something
if (n>2){
List<ParticipantSlot> l = divide(list.subList(0, n/2-1));
List<ParticipantSlot> r= divide(list.subList(n/2, n));
l.addAll(r);
return l;
}else{
return list;
}
}