【发布时间】:2012-02-03 09:47:29
【问题描述】:
下面的函数递归遍历一个列表,并将其除以一半,并对子列表做一些事情。当 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;
}
}
【问题讨论】:
-
subList 不会复制列表,如果为您提供完整列表支持的列表。
标签: java list recursion concurrentmodification