次の関数は、リストを再帰的にウォークスルーし、常に半分に分割して、サブリストで何かを実行します。リストサイズが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;
}
}