3

我的代码导致我不知道如何修复它的错误。我尝试输入打印语句,但它甚至不会那么远。发生错误

这是确切的错误

java.util.ConcurrentModificationException
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
        at java.util.HashMap$KeyIterator.next(HashMap.java:928)
        at ca.on.oicr.pinery.lims.gsle.GsleClient.getOrders(GsleClient.java:720)

第 720 行是第二个 for 循环

4

2 回答 2

2

如果要在迭代元素时从列表中添加或删除元素,可以使用ListIterator 。这是假设你orders是一个列表

所以,你的代码看起来像这样——

ListIterator<Order> it = orders.listIterator();

while ( it.hasNext() ) {
      Order ord = it.next();

      if ( ) // some condition
        it.remove(); // This wil remove the element that we just got using the next() method
      if ( ) // some other condition
        it.add(new Order()); // THis inserts the element immediately before the next call to next()
}
于 2013-10-29T14:25:45.903 回答
1

您试图sample在迭代其内容的同时操作其内容。要解决此类问题,请使用不可变集合,或者假装它们是。

您想要做的是,在迭代时samples,用您想要的集合构建另一个集合,并修改这个另一个集合而不是原来的集合。

于 2013-10-29T14:15:33.047 回答