2016-10-06 6 views
0

私は、3つの要素を持つリスト(技術的にはJavaFX APIのObservableListです)を持っています。 .size()とデバッガの両方を使って内容を検証しました。しかし、私がlist.forEach()を呼び出すと、コンシューマは2回だけ実行されます。それは何が原因でしょうか?List.size()は3ですが、forEach()は2回実行します

+2

ねえ、私はこの男を知っています! user3486184のように、反復処理中にリストから要素を削除している可能性があります。おそらくObservableListなので、他の何かがそれを観察して副作用を生み出すかもしれないと思うでしょう。これがどのようにトラブルにつながるかの例は、http://stackoverflow.com/a/23986364/1441122を参照してください。しかし、コードを確認する必要があります。 –

+1

ねえ、スチュアート!私は実際にこのリンクをつぶすつもりでした。 :)(と、もちろん、user3486184)chimingをありがとう。私は絶対にラムダのコレクションに突然変異を起こしていた。私は後で自分自身を粉砕するだろうが、まずそれを修正する必要がある。 :P – jasondlee

答えて

2

反復処理中にリストから要素を削除している場合に起こります。その場合、リストのコピーを作成し、それを繰り返し、元の要素を削除します。

関連する問題