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 は 2 番目の 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 に答える