今天在方法中用到这样一段代码:
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);
这样,就没问题了!
相关推荐
java.util.ConcurrentModificationException 异常问题详解1
java.util.ConcurrentModificationException 解决方法 在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除。 则使用会报以下异常: Java.util....
主要介绍了出现java.util.ConcurrentModificationException 问题及解决办法的相关资料,需要的朋友可以参考下
Spring数据mongodb测试 在Collections.synchronizedList或Collections.synchronizedSet上测试spring数据mongodb ConcurrentModificationException
java.util.ConcurrentModificationException: mutation occurred during iteration [error] scala.collection.mutable.MutationTracker$.checkMutations(MutationTracker.scala:43) [error] scala.collection....
java中,List在遍历的时候,如果被修改了会抛出java.util.ConcurrentModificationException错误。 看如下代码: import java.util.ArrayList; import java.util.List; public class Resource3 { public ...
Map在遍历时候通常 现获得其键值的集合Set,然后用迭代器Iterator来对Map进行遍历。
简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...