0

に問題がありConcurrentModificationExceptionます。

私が定義したクラスがArrayListあります。Complex2 つの es を追加し、 for eachループComplexを実行しようとしましたが、 . ただし、その行を削除すると、エラーは発生しません。後で必要になるポイントを計算するために、これらの初期ポイントが必要です。ConcurrentModificationException(1,0)(-1,0)

        for (Iterator<Complex> num = dots.iterator(); num.hasNext();) {
            // ConcurrentModificationException
            Complex aComplex = num.next();
            // clone it and clear
            temp.add(new Complex(aComplex));
            dots.clear();
        }
4

2 に答える 2

1

反復処理中にコレクションを変更することはできません。dot.clear(); を移動するとします。繰り返しの外側の temp.clear(); 解決します。必要に応じて、これらのコレクションをクリアする必要があるときはいつでもフラグを作成できます。繰り返しが終わったら、それらをクリアできます。

于 2013-01-10T01:40:41.647 に答える
0

ほとんどの反復子の実装では、反復子自体 (removeメソッド) で定義されたセマンティクスを使用しない限り、基になる構造を変更できません。

そのため、反復処理に構造をクリアするコードのすべてのセクションで、 ConcurrentModificationException.

于 2013-01-10T01:41:32.597 に答える