今天写了个小程序,要遍历LinkedList容器,遍历过程会进行删除操作,allJobs是一个LinkedList,代码:
for(int i=0; i<allJobs.size(); i++){
Job j = allJobs.get(i);
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
i--;
}else{
break;
}
}
进行删除之后再遍历就会出现错误,比如allJobs是[1,2,3,4],i=1时进行删除操作,2被删掉,allJobs变成[1,3,4],i++之后就会直接遍历4,忽略掉3。所以每次删除之后要做一下i--的操作。
换成foreach语法就不会出问题
for(Job j: allJobs){
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
}else{
break;
}
}