1

コードで java.util.ConcurrentModificationException エラーが発生します。これが次のコードです。

正確なエラーは次のとおりです。

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 ループです

以前にこの質問を投稿したところ、「注文の要素をループしているループ内で注文に追加しているため、例外が発生しました。ループ内でループしているコレクションを変更しないでください。同様にサンプル」。この方法を再構築する必要があることを理解し、次の提案を受けました。

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()
}

セットを別の方法で反復するため、反復メソッドを使用するときにサンプルと順序を追加する方法に行き詰まっています。for ループを使用すると仮定します。

これは、java.util.ConcurrentModificationException を取得しないように変更する方法について混乱している部分です。

f

これまでのところ、ここまで来ました。

  java.util.ListIterator<Order> it = orders.listIterator();
  while (it.hasNext()) {
     it.next().getId();
     if (sampleOrderMap.containsKey((it.next().getId())))
     {
        Set<OrderSample> samples = sampleOrderMap.get(it.next().getId());

     }

  }`

ConcurrentModificationException を取得しないように残りを配置する方法がわかりません

4

1 に答える 1