`
星夜的遐想
  • 浏览: 182944 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java.util.ConcurrentModificationException

阅读更多

今天在方法中用到这样一段代码:

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);

 

 这样,就没问题了!

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics