public static ArrayList<Job> ready = new ArrayList<Job>();
...later on....
ArrayList<Job> temp = ready;
for (Iterator<Job> iterator = temp.iterator(); iterator.hasNext();) {
Job j = (Job) iterator.next();
if (j.number == number) {
ready.remove(j);
ready.add(j);
system.devices-=devices;
j.devices+=devices;
iterator.remove();
}
}
これはなぜエラーになるのですか?確かに、準備=一時、しかし私は一時的に反復しているし、私は一時的な状態を変更していない。この問題を回避するにはどうすればよいですか?一時リストを使用中にConcurrentModificationExceptionが発生する
リストを反復処理している間にリストを変更しようとしています。 'temp'と' ready'は同じリストです - 変更するともう一方が変わります。 *リストをコピーしたい場合、 'temp = new ArrayList(ready)'を実行することができます。 –
khelwood
例外に関する質問を投稿するときは、完全な例外スタックトレースを含め、例外をスローするコード内の行を識別する必要があります。 –
@khelwoodあなたは答えとしてコメントを投稿します。 –