答案 0 :(得分:0)
由于异常,您遇到错误,因为您正在迭代ArrayList,并且在迭代它时,您正在从中删除对象。这是此类集合的失败快速机制。
如果你真的需要从ArrayList中删除项目,你可以做的是创建一个CopyOnWriteArrayList对象,这个对象就是你要做的。请参阅以下代码:
CopyOnWriteArrayList<RetryMessage> retryMessageCopyOnWrite= new CopyOnWriteArrayList<RetryMessage>(retryMessages);
Iterator<RetryMessage> retryMessageIterator = retryMessageCopyOnWrite.iterator();
...
<some object modifications here for retryMessageCopyOnWrite>
然后只需将CopyOnWriteArrayList的内容复制到retryMessages列表对象,返回原始的arrayList。
retryMessages = new ArrayList<RetryMessage>(retryMessageCopyOnWrite);
因为您还使用迭代器本身来删除项目。请阅读此链接: CopyOnWriteArrayList
我建议另一种修改列表的方法,而不是使用迭代器本身,使用CopyOnWriteArrayList对象。
你可以在迭代中使用这样的东西:
RetryMessage temp = iterator.next();
if(do some checking) {
retryMessageCopyOnWrite.remove(temp); //this removes the current element
}