Следующая функция рекурсивно проходит по списку, всегда делит его пополам и что-то делает с подсписками. Рекурсия прерывается, когда размер списка равен 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;
}
}