以下函數通過列表遞歸遍歷並將其總分爲一半,並對子列表執行一些操作。當列表大小爲2時,遞歸會中斷。我知道如果在迭代它時更改列表,會發生併發修改異常。但我不使用迭代和它仍然發生:Java列表和遞歸導致併發修改異常
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;
}
}
如果列表支持完整列表,subList不會生成列表的副本。 – 2012-01-05 15:11:16