以下は同時リストの変更の私の問題を示しているいくつかのコード(明確にするため、それの多くを削除)でありますしかし、forループで使用されているものとは異なるリストにあります。同時一覧変更
これを防ぐ方法を教えてください。
以下は同時リストの変更の私の問題を示しているいくつかのコード(明確にするため、それの多くを削除)でありますしかし、forループで使用されているものとは異なるリストにあります。同時一覧変更
これを防ぐ方法を教えてください。
は、実際の要素を削除する前に、新しいリストにそれをコピーします。
List<Week> weeksExcludingThisWeek = new ArrayList<>(this.demand.getWeeks().getAllWeeks());
あなたが現在あなたが反復されているのと同じリストから週削除されています。
パーフェクト、それはそれを修正しました。ありがとう、アンディ、私は8分であなたの答えを受け入れるでしょう。 –
ここでは、ループ変数weeksExcludingThisWeek
ためweek
変数と内部の反復の両方のためにthis.demand.getWeeks().getAllWeeks()
を使用しています。
2つのオブジェクトで同じ参照が問題です。ループ内で現在の反復オブジェクトを変更することはできませんでした。
ConcurrentModificationException
の
は、ドキュメントを見てください避けるために、ループ内new ArrayList(this.demand.getWeeks().getAllWeeks())
使用イテレータを新しいオブジェクトを作成します。https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
あなたが見つける:
イテレータは、発信者を許可します定義済みのセマンティクスを使用して、反復中に基本となるコレクションから要素を削除する
私には新感謝、情報ありがとう! – saravanakumar
あなたは最終的に週を除外すると宣言したのはなぜですか? – saravanakumar
私はeclipseを設定して、変更されていない変数を保存時に自動的に設定します。私はポイント奇妙なエラーをピンで止めると便利だとわかります。 –