今天在方法中用到这样一段代码:
for (HistoryTask historyTask : historyTasks) {
if(historyTask.getState()==null || !historyTask.getState().equals("completed")){
historyTasks.remove(historyTask);
}
}
本来想在遍历过程中,为了省事直接把不符合条件直接remove掉,哪知道,正在执行这段代码的时候,报了这样一个java.util.ConcurrentModificationException的异常,网上一打听才知道,是在遍历过程中,不能执行删除操作,应该是牵扯到指针移位的问题,没仔细研究。
其实可以先可以定义一个List,先遍历的过程中收集不符合的,然后一次性romve掉,如下:
List<HistoryTask> hs=new ArrayList<HistoryTask>();
List<HistoryTask> historyTasks=historyService.createHistoryTaskQuery().assignee(userId).list();
for (HistoryTask historyTask : historyTasks) {
if(historyTask.getState()==null || !historyTask.getState().equals("completed")){
hs.add(historyTask);
}
}
historyTasks.removeAll(hs);
这样,就没问题了!